C – Type Casting
conversia unui tip de date în altul este cunoscută sub numele de turnare de tip sau conversie de tip. De exemplu, dacă doriți să stocați o valoare ‘long’ într-un număr întreg simplu, atunci puteți tasta cast ‘long’ În ‘int’. Puteți converti valorile de la un tip la altul folosind în mod explicit operatorul cast după cum urmează −
(type_name) expression
luați în considerare următorul exemplu în care operatorul cast determină împărțirea unei variabile întregi la alta ca operație în virgulă mobilă-
#include <stdio.h>main() { int sum = 17, count = 5; double mean; mean = (double) sum / count; printf("Value of mean : %f\n", mean );}
când codul de mai sus este compilat și executat, acesta produce următorul rezultat −
Value of mean : 3.400000
trebuie remarcat aici că operatorul cast are prioritate față de diviziune, astfel încât valoarea sumei este mai întâi convertită în tip dublu și în cele din urmă devine împărțit la numărarea rezultând o valoare dublă.
conversiile de tip pot fi implicite, care sunt efectuate automat de compilator sau pot fi specificate explicit prin utilizarea operatorului turnat. Se consideră o bună practică de programare utilizarea operatorului cast ori de câte ori sunt necesare conversii de tip.
promovarea numerelor întregi
promovarea numerelor întregi este procesul prin care valorile de tip întreg „mai mici” decât int sau int nesemnate sunt convertite fie în int, fie în int nesemnate. Luați în considerare un exemplu de adăugare a unui caracter cu un număr întreg −
#include <stdio.h>main() { int i = 17; char c = 'c'; /* ascii value is 99 */ int sum; sum = i + c; printf("Value of sum : %d\n", sum );}
când codul de mai sus este compilat și executat, acesta produce următorul rezultat −
Value of sum : 116
aici, valoarea sumei este 116 deoarece compilatorul face promovarea întregului și convertește valoarea ” c ” în ASCII înainte de a efectua operația de adăugare efectivă.
conversie aritmetică obișnuită
conversiile aritmetice obișnuite sunt implicit efectuate pentru a-și arunca valorile la un tip comun. Compilatorul efectuează mai întâi promovarea întregului; dacă operanzii au încă tipuri diferite, atunci sunt convertiți la tipul care apare cel mai mare în ierarhia următoare −
conversiile aritmetice obișnuite nu sunt efectuate pentru operatorii de atribuire și nici pentru operatorii logici && și ||. Să luăm următorul exemplu pentru a înțelege conceptul −
#include <stdio.h>main() { int i = 17; char c = 'c'; /* ascii value is 99 */ float sum; sum = i + c; printf("Value of sum : %f\n", sum );}
când codul de mai sus este compilat și executat, acesta produce următorul rezultat −
Value of sum : 116.000000
aici, este simplu de înțeles că primul C devine convertit în număr întreg, dar deoarece valoarea finală este dublă, se aplică conversia aritmetică obișnuită, iar compilatorul convertește i și c în „float” și producând un rezultat ‘float’.
Leave a Reply