Rumah > pembangunan bahagian belakang > C++ > Adakah Penukaran Bool kepada Int Sentiasa 0 atau 1 dalam C dan C?

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

Susan Sarandon
Lepaskan: 2024-11-15 08:41:03
asal
479 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, keadaannya 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!

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