ホームページ >バックエンド開発 >C++ >C の連鎖比較「(4 > y > 1)」は常に False と評価されますか?

C の連鎖比較「(4 > y > 1)」は常に False と評価されますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-19 01:11:09522ブラウズ

Does C  's Chained Comparison y > 1)" 常に False と評価しますか? " /> y > 1)" 常に False と評価しますか? " />

C での連鎖論理演算子の妥当性の評価

ステートメント "(4 > y > 1)" は、その妥当性と評価について疑問を引き起こしますC でこれらの側面を詳しく調べて、ステートメントが C でどのように動作するかを明らかにしましょう。 .

式の評価

指定されたステートメントは論理演算子に分解できます。

(4 > y) > 1

C は、連鎖した論理演算子を左から順に評価します。したがって、評価は次のように進みます:

  1. 比較4 と y: y が 4 未満の場合、結果は 1 (true)、それ以外の場合は 0 (false) です。
  2. ステップ 1 と 1 の結果を比較します: 最初の比較の結果 (1 または 0) が 1 より大きくなることはないため、この比較の結果は常に false になります。 (0).

含意:

式 "(4 > y > 1)" は有効ですが、次の理由により常に false と評価されます。論理的な流れの説明

例外:

この動作の 1 つの例外は、y がカスタム クラスのオブジェクトであり、「>」演算子がオーバーロードされて別の値を示している場合です。行動。このようなシナリオでは、比較の結果が一般的な数値比較ルールから逸脱する可能性があります。

代替ステートメント:

より明確な論理セマンティクスを提供するには、次のように書き直すことをお勧めします。式は次のとおりです:

(4 > y && y > 1)

この定式化により、元のステートメントの曖昧さが回避され、必要な論理順序で条件を正しく評価します。

以上がC の連鎖比較「(4 > y > 1)」は常に False と評価されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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