TypeCasting in C: implicito, esplicito con esempio

Sommario:

Anonim

Cos'è il Typecasting in C?

Typecasting sta convertendo un tipo di dati in un altro. Viene anche chiamato conversione dei dati o conversione del tipo. È uno dei concetti importanti introdotti nella programmazione "C".

La programmazione 'C' fornisce due tipi di operazioni di casting di tipo:

  1. Cast di tipo implicito
  2. Cast di tipo esplicito

Cast di tipo implicito

Cast di tipi impliciti significa conversione di tipi di dati senza perdere il loro significato originale. Questo tipo di typecasting è essenziale quando si desidera modificare i tipi di dati senza modificare il significato dei valori memorizzati all'interno della variabile.

La conversione implicita del tipo avviene automaticamente quando un valore viene copiato nel suo tipo di dati compatibile. Durante la conversione, vengono applicate regole rigide per la conversione del tipo. Se gli operandi sono di due diversi tipi di dati, un operando con un tipo di dati inferiore viene automaticamente convertito in un tipo di dati superiore. Questo tipo di conversione del tipo può essere visto nel seguente esempio.

#includeint main(){short a=10; //initializing variable of short data typeint b; //declaring int variableb=a; //implicit type castingprintf("%d\n",a);printf("%d\n",b);} 

Produzione

1010

  1. Nell'esempio fornito, abbiamo dichiarato una variabile di tipo di dati breve con valore inizializzato come 10.
  2. Sulla seconda riga, abbiamo dichiarato una variabile di un tipo di dati int.
  3. Nella terza riga abbiamo assegnato il valore della variabile s alla variabile a. Sulla terza riga viene eseguita la conversione del tipo implicito poiché il valore della variabile s che è di tipo di dati breve viene copiato nella variabile a che è di un tipo di dati int.

Conversione di caratteri in int

Considera l'esempio dell'aggiunta di un carattere decodificato in ASCII con un numero intero:

#include main() {int number = 1;char character = 'k'; /*ASCII value is 107 */int sum;sum = number + character;printf("Value of sum : %d\n", sum );} 

Produzione:

 Value of sum : 108

Qui, il compilatore ha fatto una promozione di interi convertendo il valore di 'k' in ASCII prima di eseguire l'effettiva operazione di addizione.

Gerarchia di conversione aritmetica

Il compilatore procede prima con la promozione di un carattere in un numero intero. Se gli operandi hanno ancora diversi tipi di dati, vengono convertiti nel tipo di dati più alto che appare nel seguente grafico gerarchico:

Considera il seguente esempio per comprendere il concetto:

#include main() {int num = 13;char c = 'k'; /* ASCII value is 107 */float sum;sum = num + c;printf("sum = %f\n", sum );} 

Produzione:

 sum = 120.000000 

Prima di tutto, la variabile c viene convertita in intero, ma il compilatore converte num e c in "float" e li aggiunge per produrre un risultato 'float'.

Punti importanti sulle conversioni implicite

  • Il tipo implicito di conversione del tipo viene anche chiamato conversione del tipo standard. Non sono necessarie parole chiave o istruzioni speciali nel casting del tipo implicito.
  • La conversione da un tipo di dati più piccolo in un tipo di dati più grande è anche chiamata promozione del tipo . Nell'esempio sopra, possiamo anche dire che il valore di s è promosso al tipo intero.
  • La conversione del tipo implicito avviene sempre con i tipi di dati compatibili.

Non è possibile eseguire il casting dei tipi impliciti sui tipi di dati che non sono compatibili tra loro come:

  1. La conversione di float in un int troncerà la parte della frazione, perdendo quindi il significato del valore.
  2. La conversione da double a float arrotonda le cifre.
  3. La conversione di long int in int causerà la caduta di bit di ordine elevato in eccesso.

In tutti i casi precedenti, quando convertiamo i tipi di dati, il valore perderà il suo significato. Generalmente, la perdita di significato del valore viene avvertita dal compilatore.

La programmazione 'C' fornisce un altro modo di typecasting che è il casting esplicito del tipo.

Cast di tipo esplicito

Nella conversione del tipo implicito, il tipo di dati viene convertito automaticamente. Ci sono alcuni scenari in cui potremmo dover forzare la conversione del tipo. Supponiamo di avere una variabile div che memorizza la divisione di due operandi dichiarati come tipo di dati int.

 int result, var1=10, var2=3;result=var1/var2;

In questo caso, dopo la divisione eseguita sulle variabili var1 e var2 il risultato memorizzato nella variabile "risultato" sarà in formato intero. Ogni volta che ciò accade, il valore memorizzato nella variabile "risultato" perde di significato perché non considera la parte frazionaria che normalmente si ottiene nella divisione di due numeri.

Per forzare la conversione del tipo in tali situazioni, utilizziamo il casting del tipo esplicito.

Richiede un operatore di casting del tipo. La sintassi generale per le operazioni di casting dei tipi è la seguente:

(type-name) expression

Qui,

  • Il nome del tipo è il tipo di dati della lingua standard "C".
  • Un'espressione può essere una costante, una variabile o un'espressione effettiva.

Scriviamo un programma per dimostrare l'implementazione del type casting esplicito in "C".

#includeint main(){float a = 1.2;//int b = a; //Compiler will throw an error for thisint b = (int)a + 1;printf("Value of a is %f\n", a);printf("Value of b is %d\n",b);return 0;}

Produzione:

Value of a is 1.200000Value of b is 2

  1. Abbiamo inizializzato una variabile 'a' di tipo float.
  2. Successivamente, abbiamo un'altra variabile 'b' di tipo di dati intero. Poiché le variabili "a" e "b" sono di diversi tipi di dati, "C" non consentirà l'uso di tale espressione e genererà un errore. In alcune versioni di "C", l'espressione verrà valutata ma il risultato non sarà desiderato.
  3. Per evitare tali situazioni, abbiamo typecast la variabile "a" di tipo float. Utilizzando metodi di casting del tipo esplicito, abbiamo convertito con successo float in intero di tipo dati.
  4. Abbiamo stampato il valore di "a" che è ancora un float
  5. Dopo il typecasting, il risultato sarà sempre un numero intero "b".

In questo modo, possiamo implementare il casting di tipo esplicito nella programmazione "C".

Sommario

  • Il typecasting è anche chiamato conversione del tipo
  • Significa convertire un tipo di dati in un altro.
  • La conversione di un tipo di dati più piccolo in uno più grande è anche chiamata promozione del tipo.
  • 'C' fornisce un modo implicito ed esplicito di conversione del tipo.
  • La conversione implicita del tipo funziona automaticamente quando viene trovato il tipo di dati compatibile.
  • La conversione del tipo esplicito richiede un operatore di casting del tipo.

Tenere presenti le seguenti regole per la pratica di programmazione quando si ha a che fare con diversi tipi di dati per evitare la perdita di dati:

  • I tipi interi dovrebbero essere convertiti in float.
  • I tipi di virgola mobile dovrebbero essere convertiti in double.
  • I tipi di carattere devono essere convertiti in numeri interi.