Gli operatori hanno la precedenza

0

Ho uno snippet di codice in Java:

 int y = ++x * 5 / x-- + --x;

Quindi la mia confusione era che x - (postfix) ha una precedenza più alta dell'operatore ++ x (prefisso) così x-- dovrebbe essere eseguito prima poi ++ x.Ma un libro afferma diversamente.Io ho ragione nel mio modo di pensare ?

    
posta user1369975 11.10.2016 - 13:13
fonte

2 risposte

3

In assenza di strutture indicizzate che usano queste variabili, che è il luogo in cui gli operatori di prefisso e postfissa veramente entrano nella loro propria, suggerirei che questo è un esercizio in gran parte accademico.

Parlare in modo pragmatico; prendere il controllo dell'espressione e aggiungere parentesi per rendere l'ordine esplicito, se non altro per salvare la sanità mentale. Elimina inoltre ogni possibilità di confusione e / o problemi di portabilità (nuovo compilatore, [leggermente] diversa precedenza dell'operatore, bug sgradevole).

    
risposta data 11.10.2016 - 13:33
fonte
0

La precedenza determina quali calcoli avverranno. La valutazione viene eseguita da sinistra a destra tra le cose che potrebbero verificarsi "allo stesso tempo" in Java.

È equivalente al seguente

int t1 = ++x;
int t2 = x--;
int t3 = --x;
int y = t1 * 5 / t2 + t3;

Se devi preoccuparti di una di queste cose, hai codice cattivo. Cambialo in modo che il lettore non debba consultare il suo regolamento per sapere cosa sta succedendo.

    
risposta data 07.12.2018 - 10:35
fonte

Leggi altre domande sui tag