Apakah semua orang lupa Pascal?
1/6
hasil 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 / 6
menghasilkan 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 (
double
mungkin 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 int
atau char
, hasilnya bertipe int
.
Ya, ini merupakan sumber kebingungan bagi sebagian programmer C, terutama pemula - tetapi C tidak terkenal karena sangat ramah-pemula.