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.
Il secondo o<strong>per</strong>ando viene valutato solo se il primo è vero; se il primo è falso il risultato è già<br />
noto, quindi il secondo o<strong>per</strong>ando non viene valutato.<br />
Per esempio 2 :<br />
if (strptr && strptr->methods && strptr->methods->print)<br />
strptr->methods->print(strptr);<br />
• il puntatore a funzione print è contenuto nella struttura methods<br />
• a sua volta methods è contenuta nella struttura strptr<br />
Il metodo print viene chiamato solo se nessun puntatore in gioco è nullo:<br />
• controlla che strptr non sia nullo;<br />
• controlla che methods non sia nullo;<br />
• controlla che print non sia nullo.<br />
L’AND vale 1 solo se TUTTI i puntatori sono diversi da 0.<br />
6.28 OR logico<br />
o<strong>per</strong>atore ||<br />
sintassi espr1 || espr2<br />
n. o<strong>per</strong>andi 2<br />
barra verticale – barra verticale<br />
utilizzo il risultato vale 1 se almeno uno degli o<strong>per</strong>andi sono veri (cioè<br />
diversi da zero), altrimenti il risultato è zero<br />
associativita’ =⇒<br />
commutativita’ SI’/NO<br />
Se il primo o<strong>per</strong>ando è diverso da zero, il secondo o<strong>per</strong>ando non viene valutato.<br />
Una nota sulla commutatività: dal punto di vista logico, invertire gli o<strong>per</strong>andi non causa<br />
nessuna variazione sul risultato logico dell’o<strong>per</strong>azione. In particolari casi di utilizzo dell’o<strong>per</strong>atore,<br />
<strong>per</strong>ò, l’ordine può avere rilevanza, come nel caso seguente 3 :<br />
if (v[i] || fill_item(&v[i], i) || set_default(&v[i])) {<br />
/* lavoro sulla struttura puntata da v[i] */<br />
}<br />
dove v[i] è l’i-esimo elemento di un vettore di puntatori. Il puntatore viene utilizzato all’interno<br />
del blocco condizionale, ma deve essere non-nullo <strong>per</strong>chè lo si possa utilizzare correttamente.<br />
Così l’istruzione condizionale serve <strong>per</strong> assicurarsi che almeno una delle tre condizioni si verifichi<br />
<strong>per</strong> l’inizializzazione del puntatore i-esimo. E l’ordine di valutazione è importante in quanto<br />
2 Vedi programma di esempio and.c.<br />
3 Vedi programma di esempio or.c.<br />
71