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?
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!