在C 甚至C99 中,開發人員經常利用從布林值(bool) 到整數(int) 的隱式轉換。但是,了解此轉換的可移植性和含義對於確保程式碼正確性至關重要。
考慮以下程式碼片段:
int x = 4 < 5; assert(x == 1); x = 4 > 5; assert(x == 0);
這些斷言的預期輸出為何?它們保證在所有上下文中都能傳遞嗎?
Bool 到Int 轉換的可移植性
C 標準中定義了從bool 到int 的隱式轉換:
此轉換是完全可移植的,並保證在所有相容編譯器中的正確行為.
評價斷言
根據轉換規則,我們可以評估斷言:
結論在提供的程式碼的上下文中,斷言將會通過,因為bool 到int 的轉換是隱式執行的,並且正確分配了預期值(1 表示“true”,0 表示“false”)。然而,值得注意的是,這種行為並不限於所提供的程式碼片段,還可以擴展到使用此類轉換的任何情況。
以上是在 C 和 C99 中,「bool」到「int」的轉換是否總是如預期運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!