鱼C论坛

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

[已解决]第二章 数据类型,运算符和表达式

[复制链接]
发表于 2018-1-14 13:52:18 | 显示全部楼层 |阅读模式

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

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

x
第三个(++i)为什么是22,不应该是8*3=24吗(这是老师给的答案)??
第二个(++i)为什么变成14了,是怎么算的?
我的想法是 (++i)+(++i)+(++i)    6+7+8=21.
求助下为什么从第二个开始变7*7,而后面的 为什么不会变了??
最佳答案
2018-1-14 14:18:38
1,++在后,说明结果在下一条语句生效
2,++在前,本次马上生效
3,(++j)+(++j)+(++j)  运算优先级 其实是 ((++j)+(++j))+(++j)  7+7+8

不同编译器可能结果不同。
微信图片_20180114134649.png
微信图片_20180114134701.png
微信图片_20180114134714.png
微信图片_20180114134726.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-14 14:18:38 | 显示全部楼层    本楼为最佳答案   
1,++在后,说明结果在下一条语句生效
2,++在前,本次马上生效
3,(++j)+(++j)+(++j)  运算优先级 其实是 ((++j)+(++j))+(++j)  7+7+8

不同编译器可能结果不同。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-1-14 14:34:44 | 显示全部楼层
本帖最后由 orino 于 2018-1-14 14:46 编辑

完整的三个表达式的实际计算应该是如下:
1.7+7+8=22
2.7+7=14
3.7+7+8+9=31

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

使用道具 举报

发表于 2018-1-14 14:26:09 | 显示全部楼层
前几天有相似的问题,已经作答,可以参考一下。
http://bbs.fishc.com/thread-102944-1-1.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-29 05:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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