Rumah >pembangunan bahagian belakang >C++ >Adakah Penukaran Bool-to-Int Mudah Alih dalam C dan C?

Adakah Penukaran Bool-to-Int Mudah Alih dalam C dan C?

Barbara Streisand
Barbara Streisandasal
2024-12-06 02:50:15169semak imbas

Is Bool-to-Int Conversion Portable in C and C  ?

Penukaran bool to int

Pertimbangkan coretan kod berikut:

int x = 4 < 5;
assert(x == 1);

x = 4 > 5;
assert(x == 0);

Timbul persoalan: adakah penukaran ini mudah alih? Bolehkah kami menjamin bahawa kedua-dua penegasan itu lulus?

Jawapan:

Ya, penukaran ini mudah alih sepenuhnya dan mematuhi Piawaian C. Penukaran eksplisit daripada bool kepada int adalah tersirat dalam C , seperti yang ditakrifkan dalam §4.7/4 Piawaian C 11 atau 14 dan §7.8/4 Piawaian C 17.

Secara khusus, Piawaian menyatakan: "Jika jenis sumber ialah bool, nilai palsu ditukar kepada sifar dan nilai benar ditukar kepada satu."

Oleh itu, dalam kod yang diberikan:

  • 4 < 5 menilai kepada benar, yang secara tersirat ditukar kepada 1 dan disimpan dalam x.
  • 4 > 5 menilai kepada palsu, yang secara tersirat ditukar kepada 0 dan disimpan dalam x.

Nota untuk C:

Dalam C, jenis data bool bukan hadir. Walau bagaimanapun, C99 memperkenalkan jenis _Bool, iaitu makro yang ditakrifkan dalam fail pengepala stdbool.h. Selain itu, benar dan salah ialah makro yang berkembang kepada pemalar integer 1 dan 0, masing-masing.

Oleh itu, dalam C:

  • 4 < 5 menilai kepada nilai integer 1.
  • 4 > 5 menilai kepada nilai integer 0.

Atas ialah kandungan terperinci Adakah Penukaran Bool-to-Int Mudah Alih dalam C dan C?. 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