Rumah > pembangunan bahagian belakang > C++ > Adakah Penukaran bool kepada int Dijamin Menjadi 0 atau 1?

Adakah Penukaran bool kepada int Dijamin Menjadi 0 atau 1?

DDD
Lepaskan: 2024-11-15 09:42:02
asal
424 orang telah melayarinya

Is bool Conversion to int Guaranteed to Be 0 or 1?

bool Penukaran kepada int: Dijamin 0 atau 1?

Soalan:

Ramai penyusun kelihatan menyimpan bool nilai sama ada 0 atau 1, tetapi adakah tingkah laku ini dijamin? Khususnya, dalam coretan berikut:

int a = 2;
bool b = a;
int c = 3 + b; // 4 or 5?
Salin selepas log masuk

Jawapan:

Ya, nilai bool dijamin akan ditukar kepada sama ada 0 atau 1 apabila ditukar kepada int. Tingkah laku ini ditakrifkan dalam kedua-dua piawai C dan C:

C (§4.5/4):

Nilai r jenis bool boleh ditukar kepada nilai r taip int, dengan palsu menjadi sifar dan benar menjadi satu.

C (§6.3.1.2/1):

Apabila sebarang nilai skalar ditukar kepada _Bool, keputusan ialah 0 jika nilainya dibandingkan dengan 0; jika tidak, hasilnya ialah 1.

Oleh itu, dalam contoh yang diberikan, b akan ditukar kepada sama ada 0 (jika a tidak sama dengan 0) atau 1 (jika a bersamaan dengan 0). Menambah 3 kepada b akan menghasilkan sama ada 4 atau 5, bergantung pada nilai a.

Atas ialah kandungan terperinci Adakah Penukaran bool kepada int Dijamin Menjadi 0 atau 1?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan