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

`(bool)true` は常に C の `(int)1` と等価ですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-28 09:49:11931ブラウズ

Is `(bool)true` Always Equivalent to `(int)1` in C  ?

C 式での型キャスト: (bool)true および (int)1

C では、型キャストを使用して 1 つの型からデータを変換するのが一般的です。別のものに。この質問は、C コンパイラにおける (bool)true と (int)1 の等価性を安全に仮定できるかどうかを検討します。

等価性

bool から int への変換これは、C 標準のセクション 4.7 [conv.integral] / 4 で定義されています。ソース型が bool の場合、値は true であると規定されています。 1つに変換されます。これは、式 (bool)true == (int)1 では、bool 値が int に昇格され、値が 1 になることを意味します。

冗長キャスト

式 (bool)true == (int)1 のキャストは技術的に冗長です。 bool 値はコンパイラによって自動的に int にプロモートされ、明示的なキャストを行わなくても比較は期待どおりに機能します。

コンパイラの互換性

( bool)true および (int)1 は C 標準によって保証されています。したがって、標準に準拠する C コンパイラに対して行うのは安全な仮定です。

結論

C では、 (bool)true を安全に仮定できます。 C 標準に準拠するすべての C コンパイラの場合は == (int)1。型キャストは冗長なので、比較の結果に影響を与えることなく省略できます。

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

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