C や C99 でも、開発者はブール値 (bool) から整数 (int) への暗黙的な変換を利用することがよくあります。 。ただし、コードの正確性を確保するには、この変換の移植性と影響を理解することが重要です。
次のコード スニペットを考えてみましょう。
int x = 4 < 5; assert(x == 1); x = 4 > 5; assert(x == 0);
これらのアサーションの期待される出力は何ですか?すべてのコンテキストで渡されることが保証されていますか?
Bool から Int への変換の移植性
bool から int への暗黙的な変換は C 標準で定義されています。
この変換は完全に移植性があり、すべての準拠コンパイラー間で正しい動作が保証されます。 .
の評価アサーション
変換ルールに基づいて、アサーションを評価できます。
結論
提供されたコードのコンテキスト内で、アサーションはbool から int への変換が暗黙的に実行され、期待される値 (「true」の場合は 1、「false」の場合は 0) が正しく割り当てられるため、この結果は合格します。ただし、この動作は提示されたコード スニペットに限定されず、そのような変換が使用されるあらゆる状況に拡張されることに注意することが重要です。
以上がC および C99 では、「bool」から「int」への変換は常に予測どおりに動作しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。