Rumah > pembangunan bahagian belakang > C++ > Seberapa Mudah Alih Penukaran Boolean kepada Integer dalam C dan C?

Seberapa Mudah Alih Penukaran Boolean kepada Integer dalam C dan C?

Barbara Streisand
Lepaskan: 2024-12-05 01:09:11
asal
1073 orang telah melayarinya

How Portable is Boolean to Integer Conversion in C and C  ?

Penukaran bool to int: Menyelam Dalam Kemudahalihannya

Soalan Asal:

Sejauh manakah mudah alih penukaran nilai bool kepada int? Bolehkah kita yakin bahawa pernyataan berikut melepasi semua sistem?

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

x = 4 > 5;
assert(x == 0);
Salin selepas log masuk

Jawapan:

Ya, penukaran bool kepada int adalah mudah alih sepenuhnya dan mematuhi kedua-dua C dan C piawaian.

Penjelasan:

Dalam C , penukaran daripada bool kepada int adalah tersirat, seperti yang dinyatakan dalam Piawaian C (§4.7/4 daripada C 11 atau 14 Piawaian, §7.8/4 daripada Piawaian C 17, §7.3.9/2 daripada Piawaian 20). Mengikut piawaian ini:

  • Salah ditukar kepada sifar.
  • Benar ditukar kepada satu.

Dalam contoh kami:

int x = 4 < 5;
Salin selepas log masuk

Tepat diterjemahkan kepada:

int x = true;
Salin selepas log masuk

Memandangkan benar ialah ditukar kepada satu, penegasan akan lulus. Begitu juga, dalam penegasan kedua, palsu ditukar kepada sifar, menghasilkan penegasan kejayaan.

Maklumat Tambahan untuk C:

Sebelum C99, C tidak mempunyai jenis bool. Walau bagaimanapun, C99 memperkenalkan jenis _Bool dan bool makro (ditakrifkan dalam fail pengepala stdbool.h) yang berkembang kepada _Bool. Makro benar dan salah juga ditakrifkan dalam fail pengepala yang sama, di mana benar berkembang kepada pemalar integer 1, dan palsu berkembang kepada pemalar integer 0.

Menurut §7.16 daripada C99:

#define bool _Bool
#define true 1
#define false 0
Salin selepas log masuk

Oleh itu, penukaran bool kepada int dalam C99 dan kemudiannya berkelakuan serupa dengan C .

Atas ialah kandungan terperinci Seberapa Mudah Alih Penukaran Boolean kepada Integer 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