Rumah >pembangunan bahagian belakang >C++ >Adakah Penukaran Boolean kepada Integer Sentiasa Menghasilkan 0 atau 1?

Adakah Penukaran Boolean kepada Integer Sentiasa Menghasilkan 0 atau 1?

Linda Hamilton
Linda Hamiltonasal
2024-12-01 03:39:19519semak imbas

Does Converting a Boolean to an Integer Always Result in 0 or 1?

Bolehkah Boolean Sentiasa Menjadi Sifar atau Satu Apabila Ditukar kepada Integer?

Apabila menukar nilai boolean kepada integer, banyak pengkompil nampaknya mengekalkan hanya 0 atau 1, menimbulkan persoalan tentang kebolehpercayaan tingkah laku ini. Mari kita periksa contoh:

int a = 2;
bool b = a;
int c = 3 + b; // What is the result? 4 or 5?

Jawapan: Ya, bool dijamin 0 atau 1 apabila ditukar kepada integer.

Dalam C :

Piawaian C (§4.5/4) dengan jelas menyatakan: "Nilai r jenis bool boleh ditukar kepada nilai r jenis int, dengan salah menjadi sifar dan benar menjadi satu."

Dalam C:

Apabila nilai ditukar kepada _Bool, ia menjadi 0 atau 1 (§6.3.1.2/1): "Apabila sebarang nilai skalar ditukar kepada _Bool, hasilnya ialah 0 jika nilainya dibandingkan dengan 0, sebaliknya, hasilnya ialah 1."

Apabila menukar kepada int, prosesnya mudah kerana int boleh memegang 0 dan 1, jadi tiada perubahan dalam nilai (§6.3.1.3).

Atas ialah kandungan terperinci Adakah Penukaran Boolean kepada Integer Sentiasa Menghasilkan 0 atau 1?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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