Does && has higher precedence than || in if?
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Iila
am 15 Jan. 2016
Kommentiert: the cyclist
am 15 Jan. 2016
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 Kommentare
Guillaume
am 15 Jan. 2016
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
am 15 Jan. 2016
This test does not distinguish between the following two rules:
- && has precedence over ||
- && and || have equal precedence, with left-to-right evaluation
Akzeptierte Antwort
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!