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.
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