搜索
查看: 298|回复: 3
打印 上一主题 下一主题

--i和i--编译与理论不同

[复制链接]
跳转到指定楼层
楼主
 楼主| 发表于 2019-1-3 19:59:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
11啊哈币
int a=2;
printf("%d %d",++a,--a);
编译出的结果是 2 2
但是自己算的应该是 2 1
求解答

楼主新帖
楼主热帖
沙发
发表于 2019-1-5 13:50:54 | 只看该作者
a++是先执行表达式后再自增,执行表达式时使用的是a的原值。
++a是先自增再执行表达示,执行表达式时使用的是自增后的a。

就是说++a的语句会在使用a的值(也就是2)之前使a加一(此时a为3)
然后--a语句又使得在使用a之前(也就是3)变成2,
但是由于你的--a和++a是写在一起的,是同时执行的,所以在输出a之前
a进行了2次变换,分别是加一和减一,所以最后真正使用a输出的时候输出的就是2 2

板凳
发表于 2019-1-21 08:36:26 | 只看该作者
printf函数会先把引号后面的表达式算出来
你先把a+1然后就把a-1最后才输出,你说是不是2呢
地板
发表于 2019-2-23 18:28:43 | 只看该作者
printf函数会先把引号后面的表达式算出来
你先把a+1然后就把a-1最后才输出,你说是不是2呢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表