Rumah >pembangunan bahagian belakang >C++ >Seberapa Mudah Alih Penukaran Boolean kepada Integer dalam C dan C?
Penukaran bool to int: Menyelam Dalam Kemudahalihannya
Soalan Asal:
Sejauh manakah mudah alih penukaran nilai bool kepada int? Bolehkah kita yakin bahawa pernyataan berikut melepasi semua sistem?
int x = 4 < 5; assert(x == 1); x = 4 > 5; assert(x == 0);
Jawapan:
Ya, penukaran bool kepada int adalah mudah alih sepenuhnya dan mematuhi kedua-dua C dan C piawaian.
Penjelasan:
Dalam C , penukaran daripada bool kepada int adalah tersirat, seperti yang dinyatakan dalam Piawaian C (§4.7/4 daripada C 11 atau 14 Piawaian, §7.8/4 daripada Piawaian C 17, §7.3.9/2 daripada Piawaian 20). Mengikut piawaian ini:
Dalam contoh kami:
int x = 4 < 5;
Tepat diterjemahkan kepada:
int x = true;
Memandangkan benar ialah ditukar kepada satu, penegasan akan lulus. Begitu juga, dalam penegasan kedua, palsu ditukar kepada sifar, menghasilkan penegasan kejayaan.
Maklumat Tambahan untuk C:
Sebelum C99, C tidak mempunyai jenis bool. Walau bagaimanapun, C99 memperkenalkan jenis _Bool dan bool makro (ditakrifkan dalam fail pengepala stdbool.h) yang berkembang kepada _Bool. Makro benar dan salah juga ditakrifkan dalam fail pengepala yang sama, di mana benar berkembang kepada pemalar integer 1, dan palsu berkembang kepada pemalar integer 0.
Menurut §7.16 daripada C99:
#define bool _Bool #define true 1 #define false 0
Oleh itu, penukaran bool kepada int dalam C99 dan kemudiannya berkelakuan serupa dengan C .
Atas ialah kandungan terperinci Seberapa Mudah Alih Penukaran Boolean kepada Integer dalam C dan C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!