ホームページ >バックエンド開発 >C++ >異なるコンパイラー間での C の比較では、「true」と「1」は常に等しいと見なされますか?

異なるコンパイラー間での C の比較では、「true」と「1」は常に等しいと見なされますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-30 01:50:10161ブラウズ

Can `true` and `1` Always Be Considered Equal in C   Comparisons Across Different Compilers?

Can Bool と Int Equate Equate in C in C across Compilers?

C では、プログラマは、次のような異なる型の値を比較する必要に遭遇することがよくあります。 bool と int として。よくある質問: どの C コンパイラでも (bool)true が (int)1 に等しいと安全に仮定できますか?

答え: はい、ただしキャストは冗長です

式 (bool)true == (int)1 のキャストは不要です。 C は、比較中に bool 値を int に自動的にプロモートします。このプロモーションの結果、値は 1 になります。

動作は C 標準の [conv.integral] / 4 で定義されています。
「ソース型が bool の場合... true は 1 に変換されます。 "

したがって、式 true == 1 は 1 == 1 と等価であり、真の比較です。この動作はすべての C コンパイラで一貫しています。

以上が異なるコンパイラー間での C の比較では、「true」と「1」は常に等しいと見なされますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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