鱼C论坛

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

[已解决]C语言运算符优先级赋值问题

[复制链接]
发表于 2020-9-24 21:26:26 | 显示全部楼层 |阅读模式

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

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

x
x=5;
y=(x=2)+x;
y=4
情况2
x=5;
y=(x=2)+(x=3);
y=6
情况3
x=5
y=(x=2)+(x=3)+(x=6);
y=12
情况4
x=5
y=(x=2)+(x=3)+x*(x=6);
y=42
情况4
x=5
y=(x=2)+(x=3)+x+(x=6);
y=15
情况1 2X的值取决于最后一次赋值  情况3第三个X=6为啥单独赋值了 情况4和5是不是代表先运算那边就赋值 来个大佬帮忙讲解下
最佳答案
2020-9-24 21:56:18
本帖最后由 sunrise085 于 2020-9-24 21:57 编辑

从左向右运算,多个加号的时候,是逐个运算的。先理解第一个,理解了之后再逐个向后看,这几种情况有点递进的关系
情况一:赋值等号右侧有一个加号,就先获得加号两侧的表达式的结果,从左向右,先是x=2,然后是x,所以最终结果为2+2=4
情况二、一个加号,从左向右先是x=2,然后是x=3,最后计算x+x,即3+3=6
情况三:两个加号先算前一个加号,从左向右,和情况二一样,得到6,然后算第二个加号:6+(x=6)得到的是6+6=12
情况四:两个加号一个乘号,先算第一个加号,得到3+3=6,然后算后边的乘号,得到6*6=36,最后6+36=42
情况五:三个加号,先算第一个加号,3+3=6,再算第二个加号6+3=9,最后算第三个加号9+6=15
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-9-24 21:48:55 | 显示全部楼层
有木有大佬啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-24 21:56:18 | 显示全部楼层    本楼为最佳答案   
本帖最后由 sunrise085 于 2020-9-24 21:57 编辑

从左向右运算,多个加号的时候,是逐个运算的。先理解第一个,理解了之后再逐个向后看,这几种情况有点递进的关系
情况一:赋值等号右侧有一个加号,就先获得加号两侧的表达式的结果,从左向右,先是x=2,然后是x,所以最终结果为2+2=4
情况二、一个加号,从左向右先是x=2,然后是x=3,最后计算x+x,即3+3=6
情况三:两个加号先算前一个加号,从左向右,和情况二一样,得到6,然后算第二个加号:6+(x=6)得到的是6+6=12
情况四:两个加号一个乘号,先算第一个加号,得到3+3=6,然后算后边的乘号,得到6*6=36,最后6+36=42
情况五:三个加号,先算第一个加号,3+3=6,再算第二个加号6+3=9,最后算第三个加号9+6=15
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-24 22:41:38 | 显示全部楼层
各种情况,都有三种运算符,分别是:()、+、=。优先级也按 ()、+、= 这个顺序,前两个的结合性是从左至右,赋值运算符的结合性是从右至左。同一优先级的情况下,赋值以最后一次为准。

其运算逻辑,3楼已经给你讲解的很清楚,很详细了。我仅仅作个补充,完成今天的回复得荣誉加分
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 02:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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