Rumah >pembangunan bahagian belakang >C++ >Adakah Penukaran `bool` kepada `int` Sentiasa Berkelakuan Boleh Diramal dalam C dan C99?
Dalam C dan juga dalam C99, pembangun sering memanfaatkan penukaran tersirat daripada nilai boolean (bool) kepada integer (int) . Walau bagaimanapun, adalah penting untuk memahami kemudahalihan dan implikasi penukaran ini untuk memastikan ketepatan kod.
Pertimbangkan coretan kod berikut:
int x = 4 < 5; assert(x == 1); x = 4 > 5; assert(x == 0);
Apakah output yang dijangkakan bagi pernyataan ini? Adakah ia dijamin lulus dalam semua konteks?
Kemudahalihan Penukaran Bool kepada Int
Penukaran tersirat daripada bool kepada int ditakrifkan dalam standard C:
Penukaran ini mudah alih sepenuhnya dan menjamin kelakuan yang betul merentas semua penyusun yang mematuhi .
Penilaian Penegasan
Berasaskan pada peraturan penukaran, kita boleh menilai dakwaan:
Kesimpulan
Dalam konteks kod yang disediakan, penegasan akan lulus kerana penukaran bool kepada int dilakukan secara tersirat dan nilai yang dijangkakan (1 untuk "benar" dan 0 untuk "salah") diberikan dengan betul. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa gelagat ini tidak terhad kepada coretan kod yang dibentangkan dan meluas ke mana-mana situasi di mana penukaran sedemikian digunakan.
Atas ialah kandungan terperinci Adakah Penukaran `bool` kepada `int` Sentiasa Berkelakuan Boleh Diramal dalam C dan C99?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!