ホームページ >バックエンド開発 >C++ >C はどのようにしてブール値を暗黙的に整数に変換するのでしょうか?

C はどのようにしてブール値を暗黙的に整数に変換するのでしょうか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-03 20:47:11654ブラウズ

How Does C   Implicitly Convert Boolean Values to Integers?

暗黙的な変換: bool から int への変換

C では、bool 式を int 変数に代入するときに非直感的な変換が発生します。次のコード スニペットを考えてみましょう:

int x = 4 < 5;
assert(x == 1);

x = 4 > 5;
assert(x == 0);

変換の詳細

C 標準に準拠 (C 11/14 の §4.7/4、C 11/14 の §7.8/4) C 17、C の §7.3.9/2 20):

  • ブール値 false は暗黙的に 0 に変換されます。
  • ブール値 true は暗黙的に 1 に変換されます。

したがって、指定されたコード、4 は 1 に変換されます。 5 は false と評価され、0 に変換されて x に格納されます。

移植性

この暗黙的な bool から int への変換は、すべての C プラットフォーム間で移植可能です。

C との比較

C との違い, C は、C99 標準より前の bool データ型を明示的にサポートしていません。ただし、C99 標準では、C の bool に相当する _Bool 型が導入されました。 C99 では、マクロ true と false は、それぞれ整数定数 1 と 0 に拡張されます。結果として、 bool から int への変換動作は C と C の両方で似ています。

結論

指定されたコード内の暗黙的な bool から int への変換は標準に準拠しています。 C プラットフォーム間で移植可能です。型破りに見えるかもしれませんが、C 言語の基本的な動作を理解するためには不可欠です。

以上がC はどのようにしてブール値を暗黙的に整数に変換するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。