Duplicar posible:
why “++x || ++y && ++z” calculate “++x” firstly ? however,Operator “&&” is higher than “||”precedencia de operadores lógicos en C
Si nos fijamos en la tabla de precedencia C, verá que & & tiene mayor precedencia que ||.
Pero echar un vistazo al siguiente código:
a=b=c=1;
++a || ++b && ++c;
printf("%d %d %d\n",a,b,c);
Se imprime "2 1 1", lo que significa que el "++ un" se evalúa primero, y una vez que el programa ve un VERDADERO allí se detiene allí mismo, porque lo que está al otro lado de la || no es importante.
Pero desde & & tiene mayor precedencia que ||, no debe "++ b & & ++ c" se evalúa en primer lugar, y luego el resultado enchufado de nuevo en "++ un resultado ||"? (en este caso, el programa imprimiría "1 2 2").
Sí, no entendí eso. Gracias por el aviso. –