暗黙的な変換: 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):
したがって、指定されたコード、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 サイトの他の関連記事を参照してください。