Does && has higher precedence than || in if?
1 回表示 (過去 30 日間)
古いコメントを表示
Recently I used:
if p==0&&q==0&&r==0||p==0&&q==0||q==0&&r==0||p==0&&r==0
if p>=0&&q>=0&&r>=0||p<=0&&q<=0&&r<=0
if a>0&&b>0&&c>0||d>0&&e>0&&f>0
if g>0&&h>0
whereas I actually mean:
if (p==0&&q==0&&r==0)||(p==0&&q==0)||(q==0&&r==0)||(p==0&&r==0)
if (p>=0&&q>=0&&r>=0)||(p<=0&&q<=0&&r<=0)
if (a>0&&b>0&&c>0)||(d>0&&e>0&&f>0)
if (g>0&&h>0)
The problem is I have done months of calculations without brackets, thingking && has higher precedence than . Now I just reflected: is it true? Was my code right?
Please tell me if my code was correct without brackets or not before I publish my calculation results. This is a serious matter to me if not; I'm really worried.
P.S. I'm aware of short circuits.
3 件のコメント
Guillaume
2016 年 1 月 15 日
It is also trivial to check for yourself:
0 && 0 || 1
If it returns 1, it means it's been evaluated as
(0 && 0) || 1
If it returns 0, it's been evaluated as
0 && (0 || 1)
the cyclist
2016 年 1 月 15 日
This test does not distinguish between the following two rules:
- && has precedence over ||
- && and || have equal precedence, with left-to-right evaluation
採用された回答
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Multidimensional Arrays についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!