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
Lepaskan: 2024-12-06 02:50:15
asal
225 orang telah melayarinya

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);
Salin selepas log masuk

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