最终输出什么?
#include<iostream>
#include<stdlib.h>
int main()
{
int a = 1;
std::cout << (a++) << (a++) <<(a++) ;
system("pause");
return 0;
}
一开始是认为输出123,运行后发现输出321
搜了一下,发现有一篇文章是讲的表达式计算时机的,总结一句话的意思就是:编译器规定了一些顺序点,如果有顺序点且恰好表达式a与表达式b中间,那么执行顺序是a-b,否则执行顺序未知,上面的代码结果是123,执行的最终结果涉及到不同系统不同版本不同优化可能会产生不同的结果。说白了就是编译器做了优化产生321;
如果一定要123的输出,调用三次cout就可以了。