2013-02-24 5 views
11

, ben (eğer ilgilenirsen ftp://ftp.idsoftware.com/idstuff/doom3/source/CodeStyleConventions.doc at) İd Tech halka Kodlama mevcut Kuralları belgesini okuma ve kongre rastladım ben tamamen anlamadı edildi:"1.0f" ile "1.f" arasındaki fark nedir? John Carmack bir tapan olarak

Kullanım hassas bir çift için açık bir ihtiyaç olmadığı sürece kayan nokta değerleri için şartname.

float f = 0.5f

yerine

float f = 0.5;

Ve

float f = 1.0f;

yerine

float f = 1.f;

Bunlar nasıl farklı?

İlk örnekte ikisi arasındaki farkı anlayabiliyorum (ikincisi kaputun altında bir çift-float dönüşüm yapıyor), ancak yakalamak için üretilecek aptal bir derleyiciye ihtiyaç duyduğundan şüpheleniyorum. çalışma zamanı farkı için aynı bayt kodu.

Ancak, kayan nokta değeri bildirimlerinize 0'ların izlenmesi şeylerin değiştiği bir durum var mı?

+1

İki ikisinin de kesin bir belirtimine sahip olması nedeniyle, bağlamda bir yazım hatası gibi hissedilir. Yine de 1.0f hala daha okunabilir. –

+0

Yazar muhtemelen "float f = 1.0;" yerine float f = 1.0f; 'f' ekinin varlığı veya yokluğu noktadır. (Ve yine de "float" yerine "double" kullanmak genelde daha iyidir.) –

+0

"Float", "float" a dönüştürüldüğünde değeri değişmeyen "double" sabiti ile bir "float" başlatırsanız iyi bir derleyici uyarmalıdır. bir kural olarak, sabitin "f" ile eklenmiş olsaydı aynı kodu üretir. Bunun nedeni, ilk önce "çifte" ve sonra da "yüzdürme" ye dönüştürüldükten sonra "float" a dönüştüğünde farklı olan bazı rakamlar olmasıdır. Bir programcının bu kasti olarak kullanması olağandışı bir durumdur, fakat bu dilin meşru bir kullanımıdır ve belirtildiği şekilde derlenmelidir. –

cevap

12

Ancak, kayan nokta değeri bildirimi için 0'ın sonuna ekleme işleminin bir şey değiştirdiği durumlar var mı?

Sıfır ekleyen tek "şey" değişebilir olur. Ortaya çıkan kod tam olarak aynı olurdu, çünkü derleyiciler umursamıyorlar, fakat sıfır olan sabitler insan okuyucular tarafından okunmak daha kolay olurdu.

+0

Okunabilirlik! Çok sık gözardı edilir. – Johnsyweb

+2

Sadece insanlar için anlamlı, evet. Okunabilirlik için, belki de değil. Sayılarla ilgilenen çoğu insan, takip eden sıfırların anlamlı basamak sayısını belirttiği bir sözleşmeyi takip eder. –

İlgili konular