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

C では (4 > y > 1) は常に False と評価されますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-25 16:49:09226ブラウズ

Does (4 > y > 1) C では常に False と評価されますか?
y > 1) C では常に False と評価されますか? " />

C の (4 > y > 1) の妥当性の評価

C の式 (4 > y > 1)その有効性と評価について疑問が生じる可能性があります。

その動作を理解するには、次のことが不可欠です。 (4 > y > 1) などの連鎖比較演算子は、左から右へのネストされた比較として解析されることがわかります。したがって、ステートメント:

(4 > y > 1)

は次のように解析されます。 🎜>

比較演算子 (> と <) は式の順序で評価されます。つまり、(4 の結果は> y) は、比較に応じて 0 (偽) または 1 (真) のいずれかになります。
((4 > y) > 1)

その後、大なり演算子 (> y) を使用して、(4 > y) の結果が 1 と比較されます。 ) ただし、(4 > y) の結果は常に 0 または 1 であるため、1 より大きくなることはありません。したがって、ステートメント全体は常に戻り値を返します。 false.

演算子のオーバーロードの例外:

ただし、y がオーバーロードされた大なり演算子を持つクラスのオブジェクトである場合、この動作には例外があります。 (>)、評価が変わる可能性がございます。このような場合、オーバーロードされた演算子の実装によって式の動作が決まります。

例:

次のコードを考えてみましょう。

Inこの例では、カスタム演算子operator> mytype クラスが使用されるため、クラスの実装に応じて異なる動作が発生する可能性があります。
class mytype {
};

mytype operator>(int x, const mytype &y) {
    return mytype();
}

int main() {
    mytype y;

    cout << (4 > y > 1) << endl;

    return 0;
}

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

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