在此,结果为6.但是i = 5是不是被认为是非零值?如果我做i + = 5那么它将其视为真。为什么这有什么不同? (也不,我不是故意把i == 5)
int i=7;
if(i=5) {
cout << ++i;
} else {
cout << --i;
}
答案 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)
=
和+=
之类的赋值运算符会在赋值后返回对象的值。因此,如果您指定了false
或0
,则可以从赋值运算符中获取false
。
i=5
评估为5
,true
为if ()
。但i=0
会评估为0
,false
会将其视为if ()
。
答案 2 :(得分:2)
您的代码的行为如下:
i = 7;
i = 5;
if ( 5 ) // it's true. Isn't it ?
{
i = i + 1; // now i is 6
cout << i;
}