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

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

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

Saved successfully!

Ooh no, something went wrong!