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 サイトの他の関連記事を参照してください。