cout输出顺序

代码测试

#include <iostream>
using namespace std;
int main() {
	int i = 0;
	cout << i++ << i++ <<  i << ++i << endl;
	int j = 0;
	cout << j++;
	cout << j++;
	cout << j;
	cout << ++i;
	cout << endl;

	return 0;
}

结果截图

总结

  1. 参数从右到左入栈

  2. i:将i的引用压入栈

  3. i++:将i的值压入栈,再进行i+=1

  4. ++i:先进行i+=1,再将i的引用压入栈

  5. 有编译器优化导致的不同结果,这个是vsstudio的结果

  6. 这是linux下运行的结果,按函数顺序来执行,cout使用第一个参数i++,返回ostream对象,再对第二个参数i++操作,以此类推

  7. 因为表达式的行为不可预知,所以不论编译器生成什么样的代码程序都是错误的

  8. 这个问题是没有讨论的必要的,因为这没有答案,系统不同、编译器不同,编译出来的结果就可能不同,但是都是符合语言标准的

posted @ 2020-10-16 09:50  肥斯大只仔  阅读(189)  评论(0编辑  收藏  举报