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!