【发布时间】:2015-11-10 12:06:30
【问题描述】:
让我们使用简单的 C++ 代码,例如:
int main(){
int a = 0;
while(a<3) {
a=a++;
std::cout<<a<<std::endl;
}
}
当 g++ 5.2.0 进入无限循环并仅打印零时,此代码使用 Visual Studio 2015 打印 1、2、3。
根据C++ Operator Precedence,赋值运算符 (=) 的优先级低于后递增。这表明第一个零分配给变量'a',之后'a'递增,所以在第一次迭代后a = 1。所以从VS 2015获得的结果是正确的。为什么 GCC 会产生不同的输出?
【问题讨论】:
标签: c++ gcc operators visual-studio-2015