Nunca me acabé de aprender del todo la
preferencia de los operadores...
Según este enlace,
&& funciona antes que
||, entonces se supone que si escribimos:
true && false || true
va a ser equivalente a
(true && false) || true
con lo que el resultado de la expresión será
true. ¿Me equivoco?
Es decir, en nuestro ejemplo
Código:
if (obj1.x1>obj2.x1 && obj1.x1<obj2.x2 || obj1.x2>obj2.x1 && obj1.x2<obj2.x2)
Se evaluarían primero todos los
< y
>, luego todos los
&&, y finalmente los
||. Entonces estaría bien escrito ¿no? Sería lo mismo que escribir:
Código:
if ( ( (obj1.x1>obj2.x1) && (obj1.x1<obj2.x2) ) || ( (obj1.x2>obj2.x1) && (obj1.x2<obj2.x2 ) ) )
¿Lo estoy haciendo bien? Es que yo siempre lo escribo con paréntesis (y creo que lo seguiré haciendo por legibilidad), pero por curiosidad...