首页新闻找找看学习计划

||和&&运算符优先级和运算顺序问题

0
悬赏园豆:5 [已解决问题] 解决于 2019-02-26 14:59

先上代码

运行结果

&&的优先级比||高,为什么是先判断a++ != 0,而不是先b++呢?

尝试加括号

结果仍然没有变化,感觉括号没有起作用,括号的优先级不是最高吗?

蓝海人的主页 蓝海人 | 初学一级 | 园豆:52
提问于:2019-02-24 22:51
< >
分享
最佳答案
0

if里面的表达式,无论加不加括号,|| 左边的a++ 已经注定if条件是满足的。

这是逻辑运算符,在if 条件中是从左往右执行的,所以永远不会执行b++

收获园豆:5
Shendu.CC | 小虾三级 |园豆:1811 | 2019-02-25 11:29

逻辑运算符没有优先级?

蓝海人 | 园豆:52 (初学一级) | 2019-02-25 16:42

@蓝海人:
已经修改。

a++ || b++ && c++ 的确是 && 优先级高于 || 所以 b++ && c++是优先于 a++ || c++的

也就是相当于你后面加了括号。

但是优先级不是if语句中的 执行顺序

在if条件中,是从左到右依次执行。

优先级真正作用仅用于确定运算符和哪些子表达式结合 而已

Shendu.CC | 园豆:1811 (小虾三级) | 2019-02-25 17:22
其他回答(2)
0

你这个if 里面是要写表达式 你写个a++ 怎么判断?

筱浬 | 园豆:570 (小虾三级) | 2019-02-25 11:06

a++ 和 a!=0;a++;是一个意思

支持(0) 反对(0) 蓝海人 | 园豆:52 (初学一级) | 2019-02-25 16:26
0

a||b&&c
根据优先级相当于先算 b && c ,然后和a 相 或;如果a是true,则返回a,不论是b或c,如果a是false,则如果b是false,返回b,如果b是true,返回c;
你现在的情况就属于a为true的情况。

心悠魂然 | 园豆:2080 (老鸟四级) | 2019-02-25 15:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册