首頁 >後端開發 >C++ >Bool 到 Int 的轉換可以在 C 和 C 移植嗎?

Bool 到 Int 的轉換可以在 C 和 C 移植嗎?

Barbara Streisand
Barbara Streisand原創
2024-12-06 02:50:15165瀏覽

Is Bool-to-Int Conversion Portable in C and C  ?

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。」

因此,在給定的情況下碼:

  • 4
  • 4 > 5 計算結果為 false,隱式轉換為 0 並儲存在 x 中。

C 註解:

在 C 中,bool 資料類型不是展示。然而,C99引入了_Bool類型,它是stdbool.h頭檔中定義的巨集。此外,true 和 false 分別是擴展為整數常數 1 和 0 的巨集。

因此,在 C:

  • 4
  • 4
  • 中, 5 的計算結果為整數值 1。
4 > 5 的計算結果為整數值 0。

以上是Bool 到 Int 的轉換可以在 C 和 C 移植嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn