鱼C论坛

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

[已解决]逗号运算和表达式

[复制链接]
发表于 2017-10-13 16:54:12 | 显示全部楼层 |阅读模式

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

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

x
视频里小甲鱼老师说的一个例子  y=(x=a+b),(b+c),老师说最后y的值是b+c的,可是我试了很多次y的值都是和x一样的,是我哪里弄错了吗?
最佳答案
2017-10-13 19:17:01
第一题:小甲鱼老师忘记了优先级的问题,应该是y=((x=a+b),(b+c)),否则赋值运算符优先级会比逗号快,直接就等于x的值了,而抛弃了后面的b+c。
第二题:这个问题当是也困扰了我很久,但是经过查找资料和询问前辈得到的回答是编译器不会三者同时运算的,而是两个数先运算再去算第三个数,那么按照这个原理,y=(++j)+(++j)+(++j),的式子就是y=((++j)+(++j))+(++j),前面的两个先运算,又因为++j的优先级高,那么第一个++j 后 j = 6,第二个++j 后 j = 7,然后再来算7+7=14,y = 14 + (++j),j这个时候是7,++j后是 j =8,y = 14+8 =22
可能你会不理解,没关系,点“回复”问,懂了麻烦点下“最佳答案”
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-10-13 17:00:47 | 显示全部楼层
还有一个自增的问题,j=5,然后y=(++j)+(++j)+(++j),为什么y是等于22,不是应该等于21吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-13 17:08:27 | 显示全部楼层
问题1:按照语法应该是小甲鱼老师讲错了...
问题2:我记得小甲鱼老师在讲汇编教程的时候讲过这个问题,编译器优化的结果..按照语法是答案是:21...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-13 19:17:01 | 显示全部楼层    本楼为最佳答案   
第一题:小甲鱼老师忘记了优先级的问题,应该是y=((x=a+b),(b+c)),否则赋值运算符优先级会比逗号快,直接就等于x的值了,而抛弃了后面的b+c。
第二题:这个问题当是也困扰了我很久,但是经过查找资料和询问前辈得到的回答是编译器不会三者同时运算的,而是两个数先运算再去算第三个数,那么按照这个原理,y=(++j)+(++j)+(++j),的式子就是y=((++j)+(++j))+(++j),前面的两个先运算,又因为++j的优先级高,那么第一个++j 后 j = 6,第二个++j 后 j = 7,然后再来算7+7=14,y = 14 + (++j),j这个时候是7,++j后是 j =8,y = 14+8 =22
可能你会不理解,没关系,点“回复”问,懂了麻烦点下“最佳答案”
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 09:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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