Adakah Penukaran Bool kepada Int Sentiasa 0 atau 1 dalam C dan C?

Susan Sarandon
Lepaskan: 2024-11-15 08:41:03
asal
362 orang telah melayarinya

Is Bool Conversion to Int Always 0 or 1 in C   and C?

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan