恃才傲物反义词:请教一个和VC++的问题

来源:百度文库 编辑:高校问答 时间:2024/04/27 18:12:45
int a=0;
cout<<a<<a++<<a<<++a<<a<<endl;
这条语句是怎么执行的,我希望知道VC6.0编译器是怎样留处理它,即使涉及汇编也无妨。希望你们能真正地在C++上编译运行,不要只是想像。

cout和printf一样,输出参数是从右往左顺序压栈(即先运算最右边的表达式),输出时从栈顶取数据输出
cout<<a<<a++<<a<<++a<<a<<endl;
执行序列为
push endl
push a //a=0

inc a //++a
push a //a=1

push a //a=1

push a //a=1
inc a //a++

push a //a=2

输出时为
pop 2
pop 1
pop 1
pop 1
pop 0

所以输出结果为 “21110”

加一个主函数就可以~
main()
下面的是你要执行文件的 要求!

输出
0 0 1 2 2
其中的空格是我加的