test di verificaDomanda
Nel linguaggio C č possibile convertire il tipo di dati di una variabile?



1 / 7 domande



Vuoi visualizzarlo sul tuo sito?

La conversione delle variabili nel linguaggio C

Nel linguaggio C la conversione di una variabile è la modifica del tipo di dati che può memorizzare. La conversione di tipo è conosciuta anche con il termine "cast".

La conversione per assegnazione a una nuova variabile

Una delle strade più semplici per riassegnare il formato dei dati a una variabile è la procedura di assegnazione a una nuova variabile con un diverso tipo di dati.

Ad esempio, una variabile (a) viene dichiarata inizialmente per memorizzare dei dati in virgola mobile (float). Durante l'esecuzione del programma si decide di convertirla in numeri interi (int). Si può procedere nel seguente modo:

float a=5.3;
int b;
b=a;

E' sufficiente riassegnare la variabile in questione (a) alla nuova variabile (b) con il nuovo formato dei dati. Con la riassegnazione (b=a) tutti i valori contenuti nella prima variabile (a) sono convertiti automaticamente nel formato (int) della nuova variabile (b).

Quindi, il valore 5.3 della prima variabile (a) diventa 5 dopo essere stato riassegnato alla nuova variabile di destinazione (b).

La conversione durante le operazioni

Può anche capitare di dover sommare due variabili aventi un diverso tipo di dati. Ad esempio, la somma di una variabile numerica in virgola mobile con una numerica intera.

float a=5.3;
int b=4;
float c;
c=a+b;

In questo caso, gli operandi sono convertiti automaticamente nel formato più grande. Nell'esempio precedente il formato della variabile b viene convertito da intero ( int ) a virgola mobile ( float ). Il formato float è, infatti, più grande del formato int.

Quando il compilatore incontra queste operazioni, in fase di compilazione produce un messaggio di avviso per il programmatore che non blocca, comunque, l'esecuzione del programma oggetto una volta compilato.

La perdita dei dati

La conversione tramite l'assegnazione a una variabile di formato diverso può comportare la perdita parziale o totale dei dati.

Ad esempio, la variabile numerica in virgola mobile ( float ) viene assegnata alla variabile numerica intera ( int ). Questa assegnazione causa la perdita dei dati decimali della variabile.

float a=7.5;
int b;
b=a;

Dopo l'assegnazione il valore della seconda variabile (b) è pari a 7. Si è quindi persa l'informazione sulla parte decimale del valore iniziale (7.5) della prima variabile (a).

Le conversioni per assegnazione sono eseguite automaticamente. Tuttavia, quando il compilatore C le rileva, produce un messaggio di avviso per avvisare il programmatore.

Per evitare queste notifiche è necessario utilizzare gli operandi di conversione.

La conversione esplicita tramite operandi

La conversione può essere ottenuta utilizzando gli operatori di conversione nelle operazioni.

Ad esempio, una variabile in virgola mobile ( float ) viene assegnata a una variabile intera. Durante il processo di assegnazione si specifica di prendere soltanto il valore intero (int) del dato.

float a=7.5;
int b;
b=(int)a;

Questa semplice regola di programmazione consente di evitare le notifiche durante la compilazione del codice sorgente, in quanto il compilatore viene avvisato preventivamente dal programmatore che vuole prendere soltanto una parte dei dati.

https://www.okpedia.it/la-conversione-delle-variabili-nel-linguaggio-c


Segnala un errore o invia un suggerimento per migliorare la pagina


note
  1. La conversione dei numeri negativi

La conversione dei numeri negativi

La riassegnazione delle variabili contenenti numeri negativi non segue regole universali. Ogni compilatore e ogni macchina segue delle proprie regole.

Ad esempio, una variabile intera contenente anche un numero negativo ( -5 ) viene riassegnata a una variabile senza segno.

Dopo la conversione il valore nella variabile senza segno non è detto che sia il valore assoluto del numero ( 5 ). In alcuni compilatori, questa operazione potrebbe convertire il dato nella sua rappresentazione binaria ( es. 473847384 ) con evidenti conseguenze sull'intero processo di elaborazione dei dati.


Il linguaggio C


FacebookTwitterLinkedinLinkedin