Chiarimento operatori logici Clicca QUI per vedere il messaggio nel forum |
Strong |
Salve,
volevo chiedervi un chiarimento, in particolare è l'esercizio 2 dello scritto del 2 marzo 2011.
Esattamente non ho capito questa parte:
int x = 4;
int y = 3;
boolean b = (x>=(x>y++) ? x++ : y++);
sostituendo i valori nella condizione si ha:
4>=(4>3) [e y diventa 3]
ora, nella parentesi il risultato dovrebbe essere un boolean con risultato true, e ora mi chiede se 4>= di un true? sbaglio a ragionare? qualcuno me lo spiega? thanks! |
Strong |
*modifica [e y diventa 4, scusate]. |
Strong |
Risolto da solo.
Le parentesi ingannano, equivale a dire boolean b = x>=x>y++ ? x++ : y++;
Quindi 4>=4>3 ? true :) |
oksana213 |
Dato:
int x = 4;
int y = 3;
boolean b = (x>=(x>y++) ? x++ : y++);
Passo 1.
int x=4; int y=3;
(x>y++) ? x++ : y++, i.e. 4>3? SI, e incrementiamo x.
Passo 2.
int x=5; y=4 (y si è incrementato dopo la valutazione x>y++)
x>=(...)?, i.e.5>=5? SI.
Passo 3.
boolean b=TRUE.
Risultato finale:
int x = 5;
int y = 4;
boolean b = TRUE; |
Strong |
Originally posted by oksana213
Dato:
int x = 4;
int y = 3;
boolean b = (x>=(x>y++) ? x++ : y++);
Passo 1.
int x=4; int y=3;
(x>y++) ? x++ : y++, i.e. 4>3? SI, e incrementiamo x.
Passo 2.
int x=5; y=4 (y si è incrementato dopo la valutazione x>y++)
x>=(...)?, i.e.5>=5? SI.
Passo 3.
boolean b=TRUE.
Risultato finale:
int x = 5;
int y = 4;
boolean b = TRUE;
Grazie ma avevo già risolto. |
|
|
|