從 bool 到 int 的轉換:保證值為 0 或 1 將 bool 值轉換為 int 時會出現常見的誤解。雖然許多編譯器似乎將布林值儲存為 0 或 1,但問題仍然存在:這種行為是否得到保證? 問題: 考慮以下 C 程式碼片段: c 的值是: 4 或 5? 答案: 是的,C 和C 中的c 永遠是4 . 解釋: 解釋: 解釋: 解釋: 解釋: C : 根據 C標準 (§4.5/4),「bool 型別的右值可以轉換為 int 型別的右值,其中 false 變成 0,true 變成 1。」因此,b 轉換為 0。 C: 在C (§6.3.1.2/1) 中,「當任何標量值轉換為_Bool 時,如果該值轉換為_Bool,則結果為0比較等於0;否則結果為1。 轉換為 int: 從 _Bool 轉換為 int 很簡單,因為 int 可以同時儲存 0 和 1 (§6.3.1.3) 。在這兩種情況下,b 的值保持不變,導致 c 為 3 0 = 4。