鱼C论坛

 找回密码
 立即注册
查看: 1828|回复: 11

运算顺序

[复制链接]
发表于 2020-10-28 19:04:09 | 显示全部楼层 |阅读模式

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

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

x
int b=1;
float s;
s=b++*++b

求运算顺序解析
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-28 19:10:04 | 显示全部楼层
可以VS调试单步。在这里我表示想象一下:
首先,b=b+1=2,上式写成:
s=b++*2(++和*哪个先我可不清楚啊,或许还是同级)
然后推出:
s=b*2=4,b=b+1=3.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-10-28 19:27:12 | 显示全部楼层
405794672 发表于 2020-10-28 19:10
可以VS调试单步。在这里我表示想象一下:
首先,b=b+1=2,上式写成:
s=b++*2(++和*哪个先我可不清楚啊, ...

为什么先算*的右半边啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-29 11:34:28 | 显示全部楼层
狂想曲丶 发表于 2020-10-28 19:27
为什么先算*的右半边啊?

++在未知数前面,那么这个未知数先自增1,再与其它的运算
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-30 17:27:25 | 显示全部楼层
405794672 发表于 2020-10-29 11:34
++在未知数前面,那么这个未知数先自增1,再与其它的运算

所以不应该是s=1*3吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-31 10:37:42 | 显示全部楼层
狂想曲丶 发表于 2020-10-30 17:27
所以不应该是s=1*3吗

这是怎么来的?
话说我那个方式求的答案究竟对不对,我不知道,我没有运行程序
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-31 18:27:02 | 显示全部楼层
楼主你确定这个表达式是对的吗

s = b++*++b
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-1 00:14:42 | 显示全部楼层
s =4
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-11-1 08:19:12 From FishC Mobile | 显示全部楼层
大神本人 发表于 2020-10-31 18:27
楼主你确定这个表达式是对的吗

s = b++*++b

IMG_20201101_081548.jpg
课本上就是这样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-1 08:26:37 From FishC Mobile | 显示全部楼层
405794672 发表于 2020-10-31 10:37
这是怎么来的?
话说我那个方式求的答案究竟对不对,我不知道,我没有运行程序

我的想法是b++后b=2,b++=1,后面的++b=3,
b=3
所以s=1*3=3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-1 08:28:00 From FishC Mobile | 显示全部楼层
405794672 发表于 2020-10-31 10:37
这是怎么来的?
话说我那个方式求的答案究竟对不对,我不知道,我没有运行程序

你求的答案是对的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-1 18:00:54 | 显示全部楼层
狂想曲丶 发表于 2020-11-1 08:26
我的想法是b++后b=2,b++=1,后面的++b=3,
b=3
所以s=1*3=3

是这样的,++是独立命令,*是另外的一个命令,互不干扰。++只对未知数自增1。
式子是用b运算,那么b的值是一样的,都是它怎么可能一个是1,一个是2?
首先,式子中有++b,++在前自然优先运行,它运行完后,b就=2了。然后就是s=b++*b
此时b=2.剩下这个式子,++在后,因此,它最后运算。于是先算s=b*b=2*2
然后最后一命令就是b++,此时b自己又增了。变成3了
这个式子实际就是s=b*b,只是掺杂了对b的自增命令,自增命令(++)它是独立的。并不是说s=++b或b++就是拿++b或b++后的结果来乘。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 19:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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