bool 到int 轉換:深入探討其可移植性
原始問題:
原始問題:int x = 4 < 5; assert(x == 1); x = 4 > 5; assert(x == 0);
原始問題:
原問bool 值轉換為int 的可攜性如何?我們能否確定以下斷言在所有系統上都通過?
答案:
int x = 4 < 5;False 轉換為 0。
int x = true;
True 轉換為 1。
在我們的例子中:
準確翻譯為:
因為 true 已轉換對於一,斷言就會通過。同樣,在第二個斷言中, false 被轉換為零,從而斷言成功。#define bool _Bool #define true 1 #define false 0C 的附加資訊:在 C99 之前,C 沒有布林類型。但是,C99 引入了 _Bool 類型和擴展為 _Bool 的巨集 bool(在 stdbool.h 頭檔中定義)。巨集 true 和 false 也在同一個頭檔中定義,其中 true 擴展為整數常數 1,false 擴展為整數常數 0。 根據 C99 的 §7.16:因此,C99 及更高版本中的 bool 到 int 轉換的行為與 C 類似。
以上是C 和 C 語言中布林到整數轉換的可移植性如何?的詳細內容。更多資訊請關注PHP中文網其他相關文章!