Borrar filtros
Borrar filtros

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

1 visualización (últimos 30 días)
Iila
Iila el 15 de En. de 2016
Comentada: the cyclist el 15 de En. de 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 comentarios
Guillaume
Guillaume el 15 de En. de 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
the cyclist el 15 de En. de 2016
This test does not distinguish between the following two rules:
  • && has precedence over ||
  • && and || have equal precedence, with left-to-right evaluation

Iniciar sesión para comentar.

Respuesta aceptada

the cyclist
the cyclist el 15 de En. de 2016
According to this page about order precedence, && does indeed have precedence over ||.

Más respuestas (0)

Categorías

Más información sobre Operators and Elementary Operations en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by