Dalla A alla Z passando per C - Robotica
Dalla A alla Z passando per C - Robotica
Dalla A alla Z passando per C - Robotica
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
6.16 O<strong>per</strong>atore di casting<br />
Il casting di una variabile significa cambiare il tipo di dato assiciato <strong>alla</strong> variabile stessa.<br />
o<strong>per</strong>atore ( )<br />
parentesi tonde<br />
sintassi ( type ) espr<br />
n. o<strong>per</strong>andi 2<br />
utilizzo cambia il tipo di espr in type<br />
associativita’ ⇐=<br />
commutativita’ NO<br />
Spesso il casting non comporta generazione di codice, <strong>per</strong> esempio <strong>per</strong> convertire tra unsigned e<br />
signed, o tra puntatori di tipo diverso.<br />
/* mmap ritorna un indirizzo e<br />
* l’indirizzo -1 indica errore<br />
*/<br />
addr = mmap( /* argomenti */ );<br />
if (addr == (void *)-1) { /* gestione errore */ }<br />
6.17 Dimensione di una variabile<br />
o<strong>per</strong>atore sizeof<br />
“sizeof”<br />
sintassi sizeof var<br />
n. o<strong>per</strong>andi 1<br />
utilizzo ritorna la dimensione in byte di var<br />
associativita’ ⇐=<br />
commutativita’ NO<br />
L’o<strong>per</strong>atore sizeof viene valutato all’atto della compilazione del programma e diventa un intero<br />
costante nel codice generato. Restituisce la dimensione del tipo o del dato <strong>alla</strong> sua destra, come in<br />
sizeof int. Per chiarezza, è consuetudine mettere l’o<strong>per</strong>ando di sizeof tra parentesi e pensare<br />
a sizeof come a una funzione Sintatticamente, <strong>per</strong>ò, tali parentesi sono le parentesi aritmetiche<br />
<strong>per</strong> alterare la priorità degli o<strong>per</strong>atori, non una vera chiamata a funzione.<br />
struct buf *buffers = malloc(10 * sizeof(struct buf));<br />
if (sizeof(int) == 2) {<br />
/* codice <strong>per</strong> processore a 16 bit */<br />
62