Rumah > pembangunan bahagian belakang > C++ > Adakah Penukaran Bool-to-Int Benar-benar Mudah Alih Merentasi C dan C99?

Adakah Penukaran Bool-to-Int Benar-benar Mudah Alih Merentasi C dan C99?

Mary-Kate Olsen
Lepaskan: 2024-12-07 22:25:14
asal
604 orang telah melayarinya

Is Bool-to-Int Conversion Truly Portable Across C   and C99?

Penukaran Bool kepada Int: Pemeriksaan Terperinci Kemudahalihan

Dalam senario pengaturcaraan tertentu, penukaran nilai bool kepada int menjadi perlu. Walau bagaimanapun, kebimbangan timbul mengenai kemudahalihannya merentas platform yang berbeza. Artikel ini menyediakan analisis komprehensif tentang kemudahalihan penukaran ini, menangani persoalan sama ada kita boleh menjangkakan dengan yakin pernyataan berikut akan lulus:

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

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

Penukaran Konforman Standard

Penukaran bool-to-int dalam C ditakrifkan secara tersirat oleh standard C. Menurut §4.7/4 piawaian C 11 atau 14, dan §7.8/4 piawaian C 17, "Jika jenis sumber ialah bool, nilai palsu ditukar kepada sifar dan nilai benar ditukar kepada satu." Ini bermakna:

  • Penegasan x == 1 lulus kerana 4 < 5 menilai kepada benar, yang ditukar kepada nilai int 1.
  • Penegasan x == 0 juga melepasi kerana 4 > 5 menilai kepada palsu, yang ditukar kepada nilai int 0.

Oleh itu, penukaran bool kepada int adalah mudah alih sepenuhnya dan pematuhan piawai dalam C .

Pertimbangan untuk C

C99 memperkenalkan jenis _Bool, yang merupakan integer asas taip. stdbool.h juga memperkenalkan makro bool, benar dan palsu. Bahagian 7.16 standard C99 menyatakan bahawa benar mengembang kepada pemalar integer 1, manakala palsu mengembang kepada 0. Oleh itu, makro ini berkelakuan serupa dengan penukaran bool dalam C .

Kesimpulan

Penukaran bool-to-int adalah mudah alih merentas platform berbeza yang menyokong C dan C99 atau lebih baharu. Pengaturcara boleh yakin bahawa pernyataan yang ditunjukkan pada permulaan artikel ini akan berjaya lulus dalam kedua-dua bahasa. Kami mengesyorkan menggunakan jenis bool standard untuk kemudahalihan dan kejelasan maksimum.

Atas ialah kandungan terperinci Adakah Penukaran Bool-to-Int Benar-benar Mudah Alih Merentasi C dan C99?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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