鱼C论坛

 找回密码
 立即注册
查看: 1868|回复: 3

[已解决]新人求助!有关自加自减运算符的使用

[复制链接]
发表于 2018-1-25 20:26:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
    int x=5,y=5;
    int p,q,m,n;
    p=(x++)+(x++)+(x++);
    q=(++y)+(++y)+(++y);
    m=(++x)+(--y)+(x++)+(y--);
    n=(x--)+(y++)+(--x)+(++y);
    printf("%d %d %d %d %d %d\n",p,q,m,n,x,y);
   从q开始,为什么结果是22,是编译器版本的问题吗?按C语言的语法规则,p,q,m,n,x,y应该分别是多少?
最佳答案
2018-1-25 21:12:49
本帖最后由 orino 于 2018-1-25 21:15 编辑

p=5+5+5
q=7+7+8
m=9+7+9+7
n=10+6+8+8

其实一个表达式不是直接就变成上面这样的1形式的,例如第2个(++y) + (++y) + (++y), 其实是从左边开始,先算最左边第一个的加法,但加法之前 括号里面有自增,所以先算自增,也就是 先把 第一个++i和第二个++i运算好,这时i变成了7,所以式子变成了 7+7  + (++i) ,也就是14  + (++i) ,14是中间结果保存。 同理要计算第2个加法,把第三个 ++ i 运算完,此时,i变成8, 式子变为14+8
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-25 21:03:35 | 显示全部楼层
这个问题原来解答过的一个帖子也问过了,你可以看一下,希望对你有帮助
http://bbs.fishc.com/thread-103186-1-1.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-1-25 21:12:49 | 显示全部楼层    本楼为最佳答案   
本帖最后由 orino 于 2018-1-25 21:15 编辑

p=5+5+5
q=7+7+8
m=9+7+9+7
n=10+6+8+8

其实一个表达式不是直接就变成上面这样的1形式的,例如第2个(++y) + (++y) + (++y), 其实是从左边开始,先算最左边第一个的加法,但加法之前 括号里面有自增,所以先算自增,也就是 先把 第一个++i和第二个++i运算好,这时i变成了7,所以式子变成了 7+7  + (++i) ,也就是14  + (++i) ,14是中间结果保存。 同理要计算第2个加法,把第三个 ++ i 运算完,此时,i变成8, 式子变为14+8
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-26 16:49:38 | 显示全部楼层
orino 发表于 2018-1-25 21:12
p=5+5+5
q=7+7+8
m=9+7+9+7

好的,谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-17 12:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表