Bool 到Int 的轉換:可移植性的詳細檢查
在某些程式設計場景中,bool 到int 值的轉換是必要的。然而,人們對其跨平台的可移植性產生了擔憂。本文對這種轉換的可移植性進行了全面的分析,解決了我們是否可以自信地期望以下斷言通過的問題:
int x = 4 < 5; assert(x == 1); x = 4 > 5; assert(x == 0);
標準一致性轉換
C 中的bool 到int 轉換是由C 標準隱式定義的。根據C 11 或14 標準的§4.7/4 以及C 17 標準的§7.8/4,「如果來源類型為bool,則值false 將轉換為0,值true 將轉換為1。」這表示:
C
C99 引入了 _Bool 類型,它是一個基本整數 類型。 stdbool.h 也引進了 bool、true 和 false 巨集。 C99 標準第 7.16 節規定 true 擴展為整數常數 1,而 false 擴展為 0。因此,這些巨集的行為類似於 C 中的 bool 轉換。結論
bool 到 int 的轉換可以跨支援 C 和 C99 或更高版本的不同平台移植。程式設計師可以放心,本文開頭所示的斷言將在兩種語言中成功通過。我們建議使用標準 bool 類型以獲得最大的可移植性和清晰度。
以上是Bool 到 Int 的轉換真的可以跨 C 和 C99 移植嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!