请大佬们帮我判断一下表达式的执行顺序,拜托了
a = b - c || a % b && c / d a = b - c || a % b && c / d等价于a = (((b - c) ||( a % b)) && (c / d))
执行顺序存在短路判断:
求值顺序是 b-c, a%b, c/d
解析如下:
括号()优先级高于|| 、&&、=
但是并不是先计算所有括号里的算式
而是整个表达式按左至右的顺序执行下去
首先先计算(b-c)
然后读取||逻辑运算符判断(b-c)是否是非零(如果是非零那么后面就不用再算了(所谓的||短路:||前面是1,||后面就不计算了),直接输出结果a=1)
若(b-c)等于零,则计算(a%b)
若(a%b)为零,因为后面是&&,所以后面的也不计算了(同样是&&短路:若&&前是零后面也不用计算了)
直接输出a=0
若前面都不短路是怎么样的情况呢
a = b - c || a % b && c / d 那就是 b-c 不等于1 ,a%b不等于0 。那么就会一直从左到右算到c/d。
-----------
总结如下:
a = b - c || a % b && c / d
1先执行b-c
2根据b-c结果判断是否是||短路
3若||短路就返回1值给a并结束
4若非||短路就执行a%b
5根据1的结果执行1的结果||4的结果
6根据5的结果判断是否是&&短路
7若&&短路就返回0值给a并结束
8若非&&短路就执行c/d
9根据5的结果执行5的结果&&8的结果
10 最终把9的结果返回给a并结束 do8do8do8 发表于 2021-2-19 11:35
a = b - c || a % b && c / d
等价于a = (((b - c) ||( a % b)) && (c / d))
谢谢谢谢!!!
页:
[1]