Penukaran Bool kepada Int: Dijamin Menjadi 0 atau 1?
Dalam bahasa pengaturcaraan seperti C dan C, bool biasanya digunakan untuk mewakili nilai boolean benar dan salah. Walau bagaimanapun, di sebalik tabir, nilai ini selalunya disimpan sebagai integer. Ini menimbulkan persoalan: apabila bool ditukar kepada int, adakah hasilnya dijamin sama ada 0 atau 1?
C
Dalam C , jawapannya ialah ya yang membuak-buak. Menurut piawaian C (§4.5/4), "Nilai r jenis bool boleh ditukar kepada nilai r jenis int, dengan palsu menjadi sifar dan benar menjadi satu." Ini bermakna apabila bool ditukar kepada int dalam C , hasilnya akan sentiasa 0 atau 1.
C
Dalam C, situasinya berbeza sedikit tetapi sama jelas. Menurut piawaian C (§6.3.1.2/1), "Apabila sebarang nilai skalar ditukar kepada _Bool, hasilnya ialah 0 jika nilai itu dibandingkan dengan 0; jika tidak, hasilnya ialah 1." Ini membayangkan bahawa apabila bool (diwakili sebagai _Bool dalam C) ditukar kepada int, hasilnya sekali lagi akan menjadi 0 atau 1.
Contoh Praktikal
Untuk menggambarkan tingkah laku ini dalam kod:
int a = 2; bool b = a; int c = 3 + b; // 4
Dalam contoh ini, pembolehubah bool b dimulakan kepada nilai int a (iaitu 2), tetapi memandangkan nilai bool disimpan sebagai 0 atau 1, b menjadi 1 . Penambahan 3 seterusnya menyebabkan c diberikan nilai 4. Ini mengesahkan bahawa bool ditukar kepada int sebagai 1, menjamin hasil 0 atau 1.
Atas ialah kandungan terperinci Adakah Penukaran Bool kepada Int Sentiasa 0 atau 1 dalam C dan C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!