问题遇到的现象和发生背景
这样输入,为什么输出的结果是12 11 12,而不是12 11 11?
遇到的现象和发生背景,请写出第一个错误信息
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
运行结果及详细报错内容
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”
int main(void)
{
int a=10;
printf("%d %d %d",a,a++,++a);
return 0;
}
这个跟上一个题目有区别,
a++是先入栈,然后a++,其实这里入栈的是一个值,不是实际的a(可以理解为a的一个临时替代品)
++a入栈的是实际的a,所以,最后输出的时候,输出的是a最后的值。
具体过程:
++a,a变成11,a入栈(注意,这里是a入栈,不是11入栈)
a++,a入栈(a的值入栈,即入栈的是11,11相当于a的值的一个副本),然后a++,a变成12
a入栈,a的值是12
所以出栈的时候,是12 11 12
可以理解为a++的时候,入栈的是a的一个副本,这个副本跟执行++前a的值一致。++a入栈的是实际的a。
可以看一下下面的链接:
C语言中printf()输出a++,++a的问题_Zyxxx1的博客-CSDN博客_a++和++a的输出 C语言中printf("%d,%d",++a,a++)的输出问题C语言中常用输出函数printf(), 使用时自右向左入栈, 入栈的同时进行计算, 计算后才会在%d中输出.int a=1;printf("%d,%d,%d,%d\n",++a,a--,a++,a); //2,2,1,2int b=5;printf("%d,%d,%d,%d\n",b++,++b,b,b--); //5,6,6,5int c=10;printf("%d,%d,%d,%d,%d\n",c++,c--,++
https://blog.csdn.net/qq_42889677/article/details/119388068 您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>>
https://vip.csdn.net/askvip?utm_source=1146287632