首页
编程星球
啊哈磊的小伙伴
求助
交流
添柴
挑战
题库
院校合作
加入圈子
扫码关注啊哈磊
QQ群:703568346
@啊哈编程星球
暑期课程
金牌教练带你玩转编程!
扫码预约课程
未登录
我的添柴
退出账号
搜索
搜索
本版
文章
帖子
用户
啊哈磊_编程从这里起步
»
交流
›
互助分享
›
学习求助
›
--i和i--编译与理论不同
返回列表
发新帖
查看:
298
|
回复:
3
--i和i--编译与理论不同
[复制链接]
桥桥桥
桥桥桥
当前离线
积分
18
电梯直达
楼主
楼主
|
发表于 2019-1-3 19:59:35
|
只看该作者
|
倒序浏览
|
阅读模式
11
啊哈币
int a=2;
printf("%d %d",++a,--a);
编译出的结果是 2 2
但是自己算的应该是 2 1
求解答
我来回答
楼主新帖
--I
楼主热帖
--I
收藏
0
转播
分享
回复
举报
F-Hawk
F-Hawk
当前离线
积分
10
沙发
发表于 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
回复
举报
Forinser
Forinser
当前离线
积分
241
板凳
发表于 2019-1-21 08:36:26
|
只看该作者
printf函数会先把引号后面的表达式算出来
你先把a+1然后就把a-1最后才输出,你说是不是2呢
回复
举报
元元二郎
元元二郎
当前离线
积分
54
地板
发表于 2019-2-23 18:28:43
|
只看该作者
printf函数会先把引号后面的表达式算出来
你先把a+1然后就把a-1最后才输出,你说是不是2呢
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
广播台
特别关注
快速回复
返回顶部
返回列表