-1

在这种情况下,结果是 6。但是 i=5 不被认为是一个非零值吗?如果我做 i+=5 那么它就被认为是真的。为什么这有什么不同?(也不,我不是故意放 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

赋值运算符喜欢=+=返回对象被赋值后的值。所以,如果你给某物赋值falseor 0,你可以false从赋值运算符中得到。

i=5评估为5并且true在 的眼中if ()。但i=0将评估为并且0将由 考虑falseif ()

于 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 回答