发布网友 发布时间:2024-10-23 20:48
共5个回答
热心网友 时间:2024-10-26 01:48
这是因为printf和cout的输出时的区别
printf()中是先取a的值放进%d中输出,输出后再做自加。所以输出都是没有加之前的,即111.
在VC++环境中也是111
但是使用cout的流输出时,程序会自右向左扫,先取值后再自加,再往前一个<<,再取值,再自加。
热心网友 时间:2024-10-26 01:55
编译器不同
热心网友 时间:2024-10-26 01:51
不要乱说,要尊重编著!
函数printf从左往右读取,然后将先读取放到栈底,最后读取的放在栈顶,处理时候是从栈顶开始的,所有我们看见的结果是,从右边开始处理的。
首先计算最右边那个a++(当然显示的结果还是按括号中的顺序显示):a++是先使用再计算的(计算的结果没有存进栈里面),也就是先把此时最初的a=1存进栈里面;然后计算中间那个a++,因为栈里面存储的a为1,所以也是先显示再计算;最左边那个a++也是同样的道理。
如果看我分析的看不懂,你自己分析一下
#include <iostream>
void main()
{ int a=1;
printf("%d%d%d%d",a,++a,a--,a--);
}
结果为2211,你就知道的了。
vc++交流群1585577,谢谢!
热心网友 时间:2024-10-26 01:48
这个是谭浩强那个傻X出的题目,别理他
热心网友 时间:2024-10-26 01:49
不同的编译器有可能运行的结果不一样!!!!