Herkes Pascal'ı unuttu mu?
1/6
verim 0.1666666...
(herhangi bir hassasiyet desteklenir).
1 div 6
verim 0
C kuralının bir hata olup olmadığı tartışılabilir. İşlenenlerin aynı tipte olduğu C'nin aritmetik operatörlerinin neredeyse tamamı aynı tipte bir sonuç verir. Tutarlılık için söylenecek bir şey var.
Ayrıca, C öncelikle sistem seviyesi kodunu hedeflediğinden, çoğu C programı kayan nokta kullanmaz. Bir kerede, yanlışlıkla ihtiyaç duymayan bir programa yanlışlıkla kayan nokta kodu eklemek ciddi bir sorun olabilir. Muhtemelen hala, C için büyük bir hedef olan küçük gömülü sistemler için durum böyledir.
Çoğu C programında, tamsayı bölümünün kısaltılması muhtemelen sadece istediğiniz şeydir.
1 / 6
C'de bir kayan nokta sonucu verildiyse , o zaman:
- Dilde bir tutarsızlık olurdu.
- Standart , sonuç için hangi kayan nokta türünün kullanılacağını keyfi bir seçim yapmak zorunda kalacaktır (
double
doğal seçim gibi görünebilir, ancak ekstra hassasiyetini tercih edebilirsiniz long double
)
- Dil ediyorum hala tamsayı bölümü için bir ameliyat geçirmek zorunda; kayan nokta eklemesi yapmak ve daha sonra kırpmak yeterince iyi olmayacaktır.
C , iki tür bölüm için ayrı operatörler sağlayabilirdi , ancak yukarıdaki ikinci nokta yine de geçerli olurdu: sonuç için üç kayan nokta türünden hangisi kullanılır? İhtiyacınız varsa kayan nokta bölme elde etmek yeterince kolay olduğundan (işlenenlerden biri veya her ikisi için bir kayan nokta sabiti kullanın veya işlenenlerden birini veya her ikisini kayan nokta türüne dökün), görünüşe göre Bunu önemli saymadım.
C kılavuzunun 1974 versiyonunda (K&R'nin ilk baskısının yayınlanmasından 4 yıl önce), Ritchie olası karışıklıktan bile bahsetmiyor:
İkili / operatör bölümü gösterir. Çarpma işlemiyle aynı tür hususlar geçerlidir
ki her iki işlenen de türse int
veya char
sonucun tür olduğunu söyler int
.
Evet, bazı C programcıları, özellikle yeni başlayanlar için bir karışıklık kaynağı - ancak C'nin acemi dostu olduğu not edilmedi.