2017-02-05 12 views
-1

なぜこのコードの出力はcount==4を表示しませんか? operator--operator!よりも優先されます。彼らは両方の接頭辞で、とにかく別の部分式に適用されるよう--!演算子!()とif条件の演算子 - ()

int main() 
{ 
    int found = 0, count = 5; 
    if (!found || --count == 0) 
     cout << "danger" << endl; 
    cout << "count=" << count<< endl; 
} 
+0

[短絡評価](https://en.wikipedia.org/wiki/Short-circuit_evaluation) –

+0

式には他の演算子があります。 '!|'は短絡評価をします(つまり、 '!found'が最初に評価され、' --count == 0'が唯一評価されるので) '! 'と' --'の相対的な優先順位は関係ありません'!found'が非ゼロであるかどうか評価されます)。 – Peter

+0

私は短絡について知っていますが、プレフィックスを最優先に先に減らさないのですか?私は最初に数を4に減らしてから条件をチェックすべきではないのですか? –

答えて

0

優先順位は、ここでは関係ありません。あなたが観察しているのは、||の短絡です:左のオペランドはtrueなので、右のオペランドの値にかかわらずORの結果は真ですので、評価するのに時間を費やす必要はないのでそうしません。

+0

ありがとうございました! :) –