Adakah Penukaran bool kepada int Dijamin Menjadi 0 atau 1?

DDD
Lepaskan: 2024-11-15 09:42:02
asal
296 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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan