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