琐碎的话题,作业是否会返回'false'?

时间:2013-03-18 05:57:30

标签: c++

在此,结果为6.但是i = 5是不是被认为是非零值?如果我做i + = 5那么它将其视为真。为什么这有什么不同? (也不,我不是故意把i == 5)

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

3 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:3)

=+=之类的赋值运算符会在赋值后返回对象的值。因此,如果您指定了false0,则可以从赋值运算符中获取false

i=5评估为5trueif ()。但i=0会评估为0false会将其视为if ()

答案 2 :(得分:2)

您的代码的行为如下:

i = 7;
i = 5;
if ( 5 ) // it's true. Isn't it ?
{
    i = i + 1; // now i is 6
    cout << i;
}
相关问题