18.08.2013 Views

Dalla A alla Z passando per C - Robotica

Dalla A alla Z passando per C - Robotica

Dalla A alla Z passando per C - Robotica

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!