Mythic 发表于 2022-1-8 23:56:16

这个表达式为什么是这样子算的呀有没有大佬解释一下

E. a = b - c || a % b && c / d
写成:a = ((b – c)4 || ((a % b)1 && (c / d)2)3)
求值:a = ((b - c) || (1 && 0)) == a = (3 - 4) || 0 == a = (-1 || 0) == a = 1

逻辑运算应该是从左到右算的吧,右结合的,为什么要先算后面的逻辑与而不是先算前面的逻辑或呢

大马强 发表于 2022-1-9 09:47:09

b,c都没指定值吗?
a = ((b – c)4 || ((a % b)1 && (c / d)2)3)
是这个吗 a = ((b – c)*4 || ((a % b)*1 && (c / d)*2)*3)

李京 发表于 2022-1-9 11:10:04

可以去看看这一篇
运算符的优先级和结合性
https://fishc.com.cn/thread-67664-1-1.html
(出处: 鱼C论坛)

Mythic 发表于 2022-1-10 10:11:31

李京 发表于 2022-1-9 11:10
可以去看看这一篇
运算符的优先级和结合性
https://fishc.com.cn/thread-67664-1-1.html


这个我知道

Mythic 发表于 2022-1-10 10:13:26

大马强 发表于 2022-1-9 09:47
b,c都没指定值吗?
a = ((b – c)4 || ((a % b)1 && (c / d)2)3)
是这个吗 a = ((b – c)*4 || ((a % b)* ...

abcd 的值分别是1、2、3、4,上面的数字是运算顺序

Mythic 发表于 2022-1-10 10:15:22

Mythic 发表于 2022-1-10 10:11
这个我知道

我就是不太懂,为什么要这个顺序,加减乘除不影响这个逻辑的运算吧

jhq999 发表于 2022-1-10 12:57:06

Mythic 发表于 2022-1-10 10:15
我就是不太懂,为什么要这个顺序,加减乘除不影响这个逻辑的运算吧

搞不清楚优先级就活用括号

傻眼貓咪 发表于 2022-1-10 21:33:29

Mythic 发表于 2022-1-10 10:15
我就是不太懂,为什么要这个顺序,加减乘除不影响这个逻辑的运算吧


a = b - c || a % b && c / d

优先级排序:
运算符优先级
%3
/3
-4
&&11
||12

Mythic 发表于 2022-1-10 21:39:51

jhq999 发表于 2022-1-10 12:57
搞不清楚优先级就活用括号

这个咋说呀大佬怎么括法

Mythic 发表于 2022-1-10 21:41:11

傻眼貓咪 发表于 2022-1-10 21:33
a = b - c || a % b && c / d

优先级排序:

好的谢谢你懂啦

jhq999 发表于 2022-1-10 23:30:39

本帖最后由 jhq999 于 2022-1-10 23:35 编辑

Mythic 发表于 2022-1-10 21:39
这个咋说呀大佬怎么括法

借用楼上
a = b - c || a % b && c / d;
a=(b-c)||((a%b)&&(c/d));//如果想先a % b && c / d
a = ((b - c )|| (a % b)) &&( c / d);//如果想先 b - c || a % b
a =(((b - c )|| (a % b)) && c)/d;
页: [1]
查看完整版本: 这个表达式为什么是这样子算的呀有没有大佬解释一下