Apakah semua orang lupa Pascal?
1/6hasil 0.1666666...(dengan presisi apa pun didukung).
1 div 6 hasil panen 0
Dapat diperdebatkan apakah aturan C adalah kesalahan. Hampir semua operator aritmatika C, di mana operan memiliki tipe yang sama, menghasilkan hasil dari tipe yang sama. Ada sesuatu yang bisa dikatakan untuk konsistensi.
Selain itu, karena C terutama ditargetkan pada kode tingkat sistem, sebagian besar program C tidak menggunakan floating-point sama sekali. Pada suatu waktu, secara tidak sengaja menambahkan kode floating-point ke program yang sebaliknya tidak memerlukannya bisa menjadi masalah serius. Itu mungkin masih terjadi, untuk sistem tertanam kecil - yang, sekali lagi, merupakan target utama untuk C.
Di sebagian besar program C, memotong divisi integer mungkin adalah apa yang Anda inginkan.
Jika 1 / 6menghasilkan hasil floating-point dalam C, maka:
- Itu akan menjadi inkonsistensi dalam bahasa.
- Standar akan harus membuat pilihan yang sewenang-wenang yang tipe floating-point digunakan untuk hasilnya (
doublemungkin tampak seperti pilihan yang alami, tetapi Anda mungkin lebih suka presisi tambahan long double)
- Bahasa masih harus memiliki operasi untuk divisi integer; melakukan penambahan floating-point dan kemudian memotong kemungkinan tidak akan cukup baik.
C dapat menyediakan operator terpisah untuk dua jenis divisi, tetapi poin kedua di atas masih berlaku: mana dari tiga jenis floating-point yang akan digunakan untuk hasilnya? Dan karena cukup mudah untuk mendapatkan pembagian floating-point jika Anda membutuhkannya (gunakan konstanta floating-point untuk satu atau kedua operan, atau melemparkan satu atau kedua operan ke tipe floating-point), tampaknya tidak tidak dianggap penting.
Dalam versi C manual 1974 (itu 4 tahun sebelum penerbitan edisi pertama K&R), Ritchie bahkan tidak menyebutkan kemungkinan kebingungan:
Biner / operator menunjukkan pembagian. Jenis pertimbangan yang sama seperti untuk multiplikasi berlaku
yang mengatakan bahwa jika kedua operan bertipe intatau char, hasilnya bertipe int.
Ya, ini merupakan sumber kebingungan bagi sebagian programmer C, terutama pemula - tetapi C tidak terkenal karena sangat ramah-pemula.