VC++环境下int a=1,printf("%d%d%d",a++,a++,a++)的值是多少啊?我在v...

发布网友 发布时间: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

不同的编译器有可能运行的结果不一样!!!!

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com