Di masa lalu dari C, tidak ada tipe boolean. Orang-orang menggunakan int
untuk menyimpan data boolean, dan sebagian besar berhasil. Nol itu salah dan yang lainnya benar.
Ini berarti jika Anda mengambil int flag = 0;
dan kemudian apakah flag++
nilainya akan benar. Ini akan berfungsi tidak peduli berapa nilai bendera itu (kecuali jika Anda sering melakukannya, itu berguling dan Anda kembali ke nol, tetapi mari abaikan itu) - menambah bendera ketika nilainya 1 akan memberikan 2, yang masih benar.
Beberapa orang menggunakan ini untuk menetapkan tanpa syarat nilai boolean menjadi true. Saya tidak yakin itu menjadi idiomatik , tetapi dalam beberapa kode.
Ini tidak pernah berhasil --
, karena jika nilainya lebih dari 1 (yang bisa jadi), nilainya tetap tidak salah. Dan jika itu sudah salah (0
) dan Anda melakukan operator penurunan di atasnya, itu tidak akan tetap salah.
Ketika memindahkan kode dari C ke C ++ di masa-masa awal, sangat penting bahwa kode C yang termasuk dalam C ++ masih bisa berfungsi. Dan dalam spesifikasi untuk C ++ (bagian 5.2.6 (pada halaman 71)) berbunyi:
Nilai yang diperoleh dengan menerapkan postfix ++ adalah nilai yang dimiliki operan sebelum menerapkan operator. [Catatan: nilai yang diperoleh adalah salinan dari nilai aslinya] Operand harus merupakan nilai yang dapat dimodifikasi. Jenis operan harus merupakan tipe aritmatika atau penunjuk ke tipe objek lengkap. Setelah hasilnya dicatat, nilai objek diubah dengan menambahkan 1 padanya, kecuali objek tersebut bertipebool
, dalam hal ini ia disetel ke true. [Catatan: penggunaan ini sudah usang, lihat lampiran D.]
Operan postfix - dikurangi secara analog ke operator postfix ++, kecuali operan tidak bertipe bool
.
Ini lagi disebutkan dalam bagian 5.3.2 (untuk operator awalan - 5.2.6 pada postfix)
Seperti yang Anda lihat, ini sudah usang (Lampiran D dalam dokumen, halaman 709) dan tidak boleh digunakan.
Tapi itu sebabnya. Dan kadang-kadang Anda dapat melihat kode. Tapi jangan lakukan itu.