Does && has higher precedence than || in if?

1 回表示 (過去 30 日間)
Iila
Iila 2016 年 1 月 15 日
コメント済み: the cyclist 2016 年 1 月 15 日
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
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
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

サインインしてコメントする。

採用された回答

the cyclist
the cyclist 2016 年 1 月 15 日
According to this page about order precedence, && does indeed have precedence over ||.

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMultidimensional Arrays についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by