Rumah >pembangunan bahagian belakang >C++ >Adakah Penukaran Bool-to-Int Mudah Alih dalam C dan C?
Penukaran bool to int
Pertimbangkan coretan kod berikut:
int x = 4 < 5; assert(x == 1); x = 4 > 5; assert(x == 0);
Timbul persoalan: adakah penukaran ini mudah alih? Bolehkah kami menjamin bahawa kedua-dua penegasan itu lulus?
Jawapan:
Ya, penukaran ini mudah alih sepenuhnya dan mematuhi Piawaian C. Penukaran eksplisit daripada bool kepada int adalah tersirat dalam C , seperti yang ditakrifkan dalam §4.7/4 Piawaian C 11 atau 14 dan §7.8/4 Piawaian C 17.
Secara khusus, Piawaian menyatakan: "Jika jenis sumber ialah bool, nilai palsu ditukar kepada sifar dan nilai benar ditukar kepada satu."
Oleh itu, dalam kod yang diberikan:
Nota untuk C:
Dalam C, jenis data bool bukan hadir. Walau bagaimanapun, C99 memperkenalkan jenis _Bool, iaitu makro yang ditakrifkan dalam fail pengepala stdbool.h. Selain itu, benar dan salah ialah makro yang berkembang kepada pemalar integer 1 dan 0, masing-masing.
Oleh itu, dalam C:
Atas ialah kandungan terperinci Adakah Penukaran Bool-to-Int Mudah Alih dalam C dan C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!