ホームページ >バックエンド開発 >C++ >`(bool)true` は C の `(int)1` と等しいと常に仮定できますか?

`(bool)true` は C の `(int)1` と等しいと常に仮定できますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-28 18:44:111041ブラウズ

Can I Always Assume `(bool)true` is Equivalent to `(int)1` in C  ?

コンパイラー間で (bool)true と (int)1 が同等であると仮定できますか?

当面の問題は、同等であるかどうかを中心に展開します。 (bool)true == (int)1 は、C コンパイラに対して普遍的に当てはまります。言い換えれば、これら 2 つの表現の交換可能性を安全に想定できますか?

提供された応答によると、答えは大きく「はい」です。統合プロモーションのため、キャスト自体は不要です。整数昇格では、bool 値が自動的に int に昇格され、特に true は整数値 1 に昇格されることが決まります。

この動作については、C 標準のセクション 4.7 [conv.integral] / 4 で詳しく説明されており、明示的に次のように述べられています。 「ソース型が bool の場合、true は 1 に変換されます。」

したがって、式 true == 1 は本質的に次のようになります。 1 == 1 と同等で、使用されているコンパイラに関係なく true と評価されます。

以上が`(bool)true` は C の `(int)1` と等しいと常に仮定できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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