【发布时间】:2015-06-06 19:09:22
【问题描述】:
我有如下两个代码:
#include <iostream>
int main() {
int a = 4;
if ( a == a--){
std::cout << a << std::endl;
std::cout << "HELLO"<<std::endl;
}
std::cout << a << std::endl;
return 0;
}
输出为:3
为此:
#include <iostream>
int main() {
int a = 4;
if ( a == --a){
std::cout << a << std::endl;
std::cout << "HELLO"<<std::endl;
}
std::cout << a << std::endl;
return 0;
}
输出是:
3
HELLO
3
根据C++ operator precedence,递增和递减运算符(用于前缀和后缀)在关系运算符== 之前。那么两者的预期输出应该是相同的(这里预期是:3 对于两者),但实际上并非如此。
有什么帮助吗?此外,如果上述情况导致未定义的行为,请解释原因。
【问题讨论】: