2013-02-24 55 views
11

Là một tín đồ của John Carmack, tôi đã được đọc công khai có sẵn Mã hóa ước tài liệu Id Tech (tại ftp://ftp.idsoftware.com/idstuff/doom3/source/CodeStyleConventions.doc nếu bạn quan tâm), và đã xem qua một quy ước tôi không hoàn toàn hiểu:Sự khác biệt giữa "1.0f" và "1.f" là gì?

Sử dụng chính xác đặc điểm kỹ thuật cho các giá trị dấu phẩy động trừ khi có nhu cầu rõ ràng cho một đôi.

float f = 0.5f

Thay vì

float f = 0.5;

float f = 1.0f;

Thay vì

float f = 1.f;

Khác nhau như thế nào?

Tôi có thể hiểu sự khác biệt giữa hai trong ví dụ đầu tiên (sau đó thực hiện chuyển đổi kép thành nổi), mặc dù tôi nghi ngờ nó chỉ cần một trình biên dịch không ngu ngốc để bắt và sản xuất cùng bytecode, không có chênh lệch thời gian chạy.

Nhưng có trường hợp nào khi thêm dấu 0 vào khai báo giá trị dấu phẩy động của bạn thay đổi mọi thứ không?

+1

Cảm giác giống như lỗi đánh máy trong ngữ cảnh, vì cả hai đều có thông số chính xác. 1.0f vẫn dễ đọc hơn. –

+0

Tác giả có thể đề xuất 'float f = 1.0f;' thay vì 'float f = 1.0;'; sự hiện diện hay vắng mặt của hậu tố 'f' là điểm. (Và tốt hơn là sử dụng 'double' thay vì' float'.) –

+0

Trình biên dịch tốt nên cảnh báo nếu bạn khởi tạo 'float' với hằng số' double' có giá trị thay đổi khi được chuyển thành 'float', nhưng không nên , như một quy tắc, tạo ra cùng một mã như thể hằng số đã được gắn liền với 'f'. Điều này là do có một số chữ số khác nhau khi lần đầu tiên được chuyển đổi thành 'double' và sau đó thành' float' so với khi được chuyển đổi trực tiếp thành 'float'. Nó sẽ là bất thường cho một lập trình viên để sử dụng những cố ý, nhưng nó là một sử dụng hợp pháp của ngôn ngữ và cần được biên soạn như đã nêu. –

Trả lời

12

Nhưng có trường hợp nào khi thêm dấu 0 vào khai báo giá trị dấu phẩy động của bạn thay đổi mọi thứ không?

Điều "duy nhất" thêm số 0 sẽ thay đổi là dễ đọc. Mã kết quả sẽ giống hệt nhau, bởi vì các trình biên dịch không quan tâm, nhưng hằng số với một số không tại chỗ sẽ dễ đọc hơn bởi các độc giả của con người.

+0

Dễ đọc! Vì vậy, thường bị bỏ qua. – Johnsyweb

+2

Chỉ có ý nghĩa với con người, vâng. Có thể đọc được, có thể không. Hầu hết mọi người xử lý các con số theo một quy ước trong đó các số không theo sau cho biết số chữ số có nghĩa. –

Các vấn đề liên quan