ホームページ > バックエンド開発 > C++ > C のブール整数変換における「true」は常に「1」と同じですか?

C のブール整数変換における「true」は常に「1」と同じですか?

Susan Sarandon
リリース: 2024-11-29 15:20:10
オリジナル
252 人が閲覧しました

Is `true` Always Equivalent to `1` in C   Boolean-Integer Conversions?

C でのブール整数変換

C プログラミング言語では、異なるタイプのデータ間の変換が必要になることがよくあります。一般的な変換の 1 つは、ブール値と整数の間の変換です。疑問が生じます: ブール値 true は、どの C コンパイラでも整数 1 と同等であると仮定できますか?

答え

はい、仮定しても問題ありません。どの C コンパイラでも (bool)true == (int)1 となります。これは次の理由によるものです。

  • 積分昇格: ブール値が整数に変換されるとき、整数昇格と呼ばれるプロセスが実行されます。これにより、ブール値が 0 (false の場合) または 1 (true の場合) の値を持つ int に変換されます。
  • 暗黙的な変換: この変換にはキャストは必要ありません。 C コンパイラは、式のコンテキストに基づいて暗黙的な変換を自動的に実行します。

したがって、式 true == 1 は、使用されている C コンパイラに関係なく、true と評価されます。この動作は C 標準 (4.7 [conv.integral]) で指定されており、「ソース型が bool の場合、true は 1 に変換されます。」

以上がC のブール整数変換における「true」は常に「1」と同じですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート