-1

この場合、結果は 6 です。しかし、i=5 はゼロ以外の値と見なされませんか? i+=5 を実行すると、それは true としてカウントされます。なぜこれは違うのですか?(またいいえ、i==5 にするつもりはありませんでした)

int i=7;
if(i=5) {
cout << ++i;
} else {
cout << --i;
}
4

3 に答える 3

3

割り当ては、割り当てられたものを返します。あなたの例では:

int i = 7;
if (i = 5) { // returns 5, which is non-zero, or "true"
    cout << ++i; // prints 6, or 5+1
}  else {
    cout << --i; // would print 4, or 5-1, if it was hit, which it never will
}

プレインクリメントとポストインクリメントで混乱するかもしれません。たとえば、次のことを考慮してください。

int i = 7;
if (i = 5) { // returns 5, which is non-zero, or "true"
    cout << i++; // prints 5, i is 6 after this line
}  else {
    cout << i--; // would print 5, but i is 4 after this line
}
于 2013-03-18T06:01:25.333 に答える
3

代入演算子は、オブジェクトが代入された後、オブジェクトの値を好き=+=返します。したがって、何かfalseまたはを代入すると、代入演算子から0取得できます。false

i=5は に評価され5、それtrueは の目にはありif ()ます。しかし、i=0に評価され、 によって0考慮falseされif ()ます。

于 2013-03-18T06:01:44.460 に答える
2

コードは次のように動作します。

i = 7;
i = 5;
if ( 5 ) // it's true. Isn't it ?
{
    i = i + 1; // now i is 6
    cout << i;
}
于 2013-03-18T06:01:26.307 に答える