首頁 > 後端開發 > C++ > C 和 C 語言中布林到整數轉換的可移植性如何?

C 和 C 語言中布林到整數轉換的可移植性如何?

Barbara Streisand
發布: 2024-12-05 01:09:11
原創
1063 人瀏覽過

How Portable is Boolean to Integer Conversion in C and C  ?

bool 到int 轉換:深入探討其可移植性

原始問題:

原始問題:
int x = 4 < 5;
assert(x == 1);

x = 4 > 5;
assert(x == 0);
登入後複製

原始問題:

原問bool 值轉換為int 的可攜性如何?我們能否確定以下斷言在所有系統上都通過?

答案:

  • 是的,bool 到int 的轉換是完全可移植的並且符合都是C和C
  • 解釋:

在C 中,從bool 到int的轉換是隱式的,如C 標準中所指定的(C 11 或C 標準中的第4.7/4 節或14 標準、C 17 標準的§7.8/4、20 標準的§7.3.9/2) 。根據這些標準:
int x = 4 < 5;
登入後複製

False 轉換為 0。
int x = true;
登入後複製

True 轉換為 1。

在我們的例子中:

準確翻譯為:

因為 true 已轉換對於一,斷言就會通過。同樣,在第二個斷言中, false 被轉換為零,從而斷言成功。
#define bool _Bool
#define true 1
#define false 0
登入後複製

C 的附加資訊:在 C99 之前,C 沒有布林類型。但是,C99 引入了 _Bool 類型和擴展為 _Bool 的巨集 bool(在 stdbool.h 頭檔中定義)。巨集 true 和 false 也在同一個頭檔中定義,其中 true 擴展為整數常數 1,false 擴展為整數常數 0。 根據 C99 的 §7.16:因此,C99 及更高版本中的 bool 到 int 轉換的行為與 C 類似。

以上是C 和 C 語言中布林到整數轉換的可移植性如何?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板