Eventuali duplicati:
why “++x || ++y && ++z” calculate “++x” firstly ? however,Operator “&&” is higher than “||”Precedenza degli operatori logici in C
Se si guarda alla tabella delle precedenze di C, vedrete che & & ha precedenza maggiore rispetto ||.
Ma date un'occhiata al codice seguente:
a=b=c=1;
++a || ++b && ++c;
printf("%d %d %d\n",a,b,c);
esso stampa "2 1 1", il che significa che il "++ a" viene valutata per prima, e una volta che il programma vede un VERO lì si ferma proprio lì, perché quello che c'è dall'altra parte del || non è importante.
Ma poiché & & ha precedenza maggiore rispetto ||, non dovrebbe "++ b & & ++ c" essere valutata per prima, e poi il risultato inserito di nuovo in "++ un || risultato"? (in questo caso il programma stamperebbe "1 2 2").
Sì, non l'ho capito. Grazie per il testa a testa. –