Dalla A alla Z passando per C - Robotica
Dalla A alla Z passando per C - Robotica
Dalla A alla Z passando per C - Robotica
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
6.30 Assegnamento<br />
o<strong>per</strong>atore =<br />
uguale<br />
sintassi espr1 = espr2<br />
n. o<strong>per</strong>andi 2<br />
utilizzo assegna il valore di espr2 ad espr1; il cui risultato<br />
dell’espressione è uguale al valore di espr2<br />
associativita’ =⇒<br />
commutativita’ NO<br />
L’o<strong>per</strong>ando di sinistra deve essere una variabile o una struttura dati o una espressione equivalente.<br />
Tale o<strong>per</strong>ando si chiama lvalue, abbreviazione di “left value”. I messaggi di errore del compilatore<br />
relativi ad lvalue si riferiscono ad assegnamenti erronei.<br />
/* a = (b = (c = 0)) */<br />
a = b = c = 0;<br />
/* sintatticamente valido, equivalente a if(0) */ ;<br />
if (i = 0)<br />
/* bene */<br />
stat_array[12]->st_mode = 0;<br />
/* lvalue non valida: un vettore non è assegnabile */<br />
"nome" = s;<br />
/* lvalue non valida: come sopra ma più evidente */<br />
3 = i;<br />
Nell’esempio<br />
int value = index == 10;<br />
sono combinati i due o<strong>per</strong>atori di assegnamento e confronto. Il risultato dell’istruzione è quello<br />
di assegnare il valore 1 <strong>alla</strong> variabile value se la variabile index vale 10, mentre assegna il valore<br />
0 se index è diverso da 10. In pratica viene prima valutata l’espressione index == 10, e viene<br />
assegnato il valore 0 piuttosto che 1 a seconda che l’espressione sia rispettivamente falsa o vera.<br />
L’uso di == viene spesso confuso con l’uso di =: il primo o<strong>per</strong>atore effettua un test e<br />
quindi non cambia il valore della variabile, mentre il secondo un assegnamento, cambiando<br />
il valore della variabile. Il compilatore non segnala alcun avvertimento a riguardo.<br />
Vedi il secondo esempio.<br />
73