Ciao a tutti, sono un nuovo iscritto al forum e anche un neofita sia di programmazione sia di linguaggi e sto cercando di imparare.
Stavo svolgendo un esercizio il quale mi chiede:
se u=2, v=3, w=5, x=7 e y=11, qual è il valore di ciascuna delle seguenti espressioni, supponendo che si tratti di valori di tipo int?
1) u + v*w + x
2) u + y%v*w + x
3) u++/v + u++*w
Per quanto riguarda 1) e 2) non ho avuto problemi risultano rispettivamente 24 e 19; per quanto riguarda il 3) ho alcuni dubbi da chiedere: io a primo impatto avrei detto 16 però simulando l'operazione su netbeans questo mi restituisce 15.
Seguendo la logica di java in teoria (se non ho sbagliato) si dovrebbe partire per prima con l'operazione di incremento cioè u++ e poi la divisione e la moltiplicazione come se fossero operazioni aritmetiche normali, per concludere con la somma.
Per cui seguendo il ragionamento appena fatto avre che u=2 passerebbe a u=3 poi avrei la nuova operazione: 3/3 + 3*5 che ovviamente produce 16 e qui arriviamo alle mie domande:
-Perchè (ammesso che non abbia sbagliato a ragionare) netbeans mi restituisce 15?
-per quanto riguarda l'incremento di u++ in quell'operazione (3) si esegue solo una volta e questo mi genera u=3 oppure bisogna considerare due istruzioni separate? nel senso il primo incremento u++ mi genera u=3 e il secondo incremento u++ mi genera u=4? perchè se fosse così a sua volta il risultato sarebbe ancora diverso.
Se può essere utile inserisco il codice che ho eseguito su netbeans:
package esercizio2_4;
public class Esercizio2_4 {
public static void main(String[] args) {
int u = 2, v = 3, w = 5, x = 7, y = 11;
System.out.println(u+v*w+x);
System.out.println(u+y%v*w+x);
System.out.println(u++/v + u++*w);
}
}
Ringrazio anticipatamente a chi mi aiuterà