Ciao a tutti
qualcuno mi può spiegare come funzionano queste somme in java:
1) a=4 b=8
a= a++ + --b
2)
a= ++a + b--
GRAZIE
Ciao a tutti
qualcuno mi può spiegare come funzionano queste somme in java:
1) a=4 b=8
a= a++ + --b
2)
a= ++a + b--
GRAZIE
Nella prima la sequenza di istruzioni è la seguente:
1) viene decrementato 'b' di uno (ora 'b' vale 7)
2) viene sommato 'a' a 'b' (somma = 11)
3) viene incrementato a di uno (ora 'a' vale 5)
4) ad 'a' viene assegnato il valore dell'espressione somma (ora 'a' vale 11).
Nella seconda sequenza, invece, accade questo:
1) 'a' viene incrementato di uno (ora 'a' vale 5)
2) ad 'a' viene aggiunto 'b' (somma = 13)
3) viene decrementato 'b' di uno (ora 'b' vale 7)
4) ad 'a' viene assegnato il valore dell'espressione somma (ora 'a' vale 13)
Tutto si gioca sulla precedenza degli operatori e sul loro significato nella forma prefissa e suffissa: nella forma prefissa (++a) prmia viene incrementata la variabile e solo successivamente la variabile entra in gioco nell'espressione; nella forma suffissa (a++), invece, prima la variabile entra in gioco nell'espressione e solo successivamente viene incrementata. Lo stesso dicasi per l'operatore di decremento.
Ciao.
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Ok ora è chiaro..
dalle soluzione che ho io cmq
a=a++ + --b risulta 12 ....
Ok ora è chiaro..
dalle soluzione che ho io cmq
a=a++ + --b risulta 12 ....
Le soluzioni sono sbagliate! Prova: fa 11!
Se lo stesso codice lo compili in C/C++, invece, il risultato diventa effettivamente 12 (facendo in modo, quindi, che la valutazione di a++ venga effettuata prima dell'espressione in cui è contenuta).
Ciao.
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Originariamente inviato da elly00
Ok ora è chiaro..
dalle soluzione che ho io cmq
a=a++ + --b risulta 12 ....
è sbagliata la soluzione che hai, ha ragione Lele
concordo!!!!
chiedo ancora pochi dettagli:
avendo rand.nextInt()%6 come funzia l'operatore resto?
Ijn questo caso dovrebbe dare da -5 a 5 ma non capisco il meccanismo!!
MERCIIIIIIIIIIII
L'operatore resto (Modulo: %) restituisce il resto della divisione di x per il valore dopo l'operatore. Non potrà mai dare un valore negativo: il resto di una divisione va sempre da 0 a (|divisore|-1). In questo caso, quindi, restituisce un valore compreso fra 0 e 5.
Ciao.
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Il risultato è effettivamente un intero compresto tra -5 e 5. Il motivo è che la funzione Random.nextInt() restituisce anche valori negativi. Dividendo un numero negativo per un numero positivo (6) si ottiene un numero negativo come risultato e il resto sarà anch'esso negativo!
Es: -151 / 6 = -25 con il resto di -1
Su come funziona l'operatore modulo penso sia stato chiaro Lele, cioè ti restituisce il resto della divisione.
Effettivamente è così (anche se MATEMATICAMENTE il risultato è ERRATO). Per definizione, infatti, il resto della divisione NON PUO' ESSERE NEGATIVO. Purtroppo, i processori, questo non lo sanno :gren:Originariamente inviato da Lancill
Il risultato è effettivamente un intero compresto tra -5 e 5. Il motivo è che la funzione Random.nextInt() restituisce anche valori negativi. Dividendo un numero negativo per un numero positivo (6) si ottiene un numero negativo come risultato e il resto sarà anch'esso negativo!
Es: -151 / 6 = -25 con il resto di -1
Su come funziona l'operatore modulo penso sia stato chiaro Lele, cioè ti restituisce il resto della divisione.
Nell'esempio precedente, infatti, -151 / 6 = -26 con il resto di +5.
(-26) * 6 + 5 = -151.
Ciao.
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza