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.

7.8 Conversioni di tipo<br />

Le conversioni di tipo, o casting, <strong>per</strong>mettono di trasformare un valore contenuto in una variabile<br />

di un determinato tipo in un valore opportuno di un tipo diverso.<br />

La conversione può avvenire in vari modi:<br />

Conversioni automatiche:<br />

• in espressioni che coinvolgono tipi diversi, il risultato dipende dall’o<strong>per</strong>ando più ricco di<br />

informazioni<br />

• es. 8/5 coinvolge due interi, il risultato è intero 1<br />

• es. 8/5.0 coinvolge un intero ed un double, il risultato è double 1.6<br />

Conversioni <strong>per</strong> assegnamento:<br />

• il valore della parte destra viene convertito nel tipo della parte sinistra<br />

• float → int vengono troncati i decimali<br />

• es. int n; n = 1.6; n vale 1<br />

• es. int n; n = -1.6; n vale -1 (non vi sono arrotondamenti)<br />

• int → char vengono conservati i bit meno significativi<br />

• es. char c; c = 257; c vale 1<br />

Conversioni esplicite (o<strong>per</strong>atore cast):<br />

• (nome tipo) espressione<br />

• es. 8/(double) 5 risultato 1.6 (5 viene forzato a double) ma<br />

• es. (double) (8/5) risultato 1.0 (prima si calcola la divisione fra interi, poi il risultato<br />

viene considerato double)<br />

7.9 Assegnare nuovi nomi ai tipi di dato: typedef<br />

In C è possibile assegnare dei nomi simbolici ai tipi di dati esistenti. Questo viene fatto principalmente<br />

<strong>per</strong> migliorare la chiarezza di programmi lunghi e complessi. Un’altra possibile ragione è<br />

quella di realizzare dei tipi di dati indipendenti d<strong>alla</strong> piattaforma sulla quale il programma sarà<br />

eseguito <strong>per</strong> motivi di portabilità. Per esempio, si può pensare di fare in modo che un tipo intero<br />

abbia sempre dimensione di 16 bit. Verrà <strong>per</strong>ciò definito un nome simbolico del tipo<br />

int16<br />

che verrà ridefinito <strong>per</strong> le diverse architetture. Ma un qualsiasi programma applicativo userà<br />

sempre il nome int16.<br />

La definizione dei nuovi tipi si realizza <strong>per</strong> mezzo della parola chiavetypedef, con una sintassi<br />

tipo<br />

typedef tipo nome;<br />

86

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

Saved successfully!

Ooh no, something went wrong!