Dalam C , adalah amalan biasa untuk menggunakan taip untuk menukar data daripada satu jenis kepada yang lain. Soalan ini meneroka sama ada kita boleh mengandaikan kesetaraan (bool)true dan (int)1 dengan selamat dalam pengkompil C.
Persamaan
Penukaran daripada bool kepada int ditakrifkan oleh piawai C dalam bahagian 4.7 [conv.integral] / 4. Ia menyatakan bahawa jika jenis sumber ialah bool, nilai benar ditukar kepada satu. Ini bermakna dalam ungkapan (bool)true == (int)1, nilai bool akan dinaikkan pangkat kepada int dan akan mempunyai nilai 1.
Pemutus Berlebihan
Pasukan dalam ungkapan (bool)true == (int)1 secara teknikalnya berlebihan. Nilai bool akan dinaikkan secara automatik kepada int oleh pengkompil dan perbandingan akan berfungsi seperti yang diharapkan tanpa hantaran eksplisit.
Keserasian Pengkompil
Persamaan antara ( bool)true dan (int)1 dijamin oleh standard C. Oleh itu, andaian selamat untuk dibuat bagi mana-mana pengkompil C yang mematuhi piawaian.
Kesimpulan
Dalam C , kita boleh menganggap (bool)benar dengan selamat == (int)1 untuk semua penyusun C yang mengikut piawaian C. Siaran taip adalah berlebihan dan boleh ditinggalkan tanpa menjejaskan keputusan perbandingan.
Atas ialah kandungan terperinci Adakah `(bool)true` Sentiasa Bersamaan dengan `(int)1` dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!