与cout语句的执行顺序有关吗?
代码:
int main() {
int x=80;
int &y=x;
cout<<x<<" "<<(--y)<<endl;
return 0;
}
输出: 79 79
答案 0 :(得分:3)
与cout的执行顺序有关吗? 声明?
这与order of evaluation有关。在c ++ 17之前,您的示例将表现出未定义的行为:
如果对标量对象的副作用相对于值未排序 使用相同标量对象的值进行计算,其行为是 未定义。
自c ++ 17起,行为已定义,在这种情况下,正确的输出为
80 79
答案 1 :(得分:2)
这是未定义的行为,意味着任何事情都可能发生。