CATEGORII DOCUMENTE |
In general o expresie C contine operanzi de tipuri diferite. Pentru operatorii binari exista situatii cand operanzii nu sunt de acelasi tip si trebuie executate conversii astfel incat operatorii sa se aplice pentru operanzi de acelasi tip. Aceste conversii le face automat compilatorul. Exista o regula a conversiilor implicite care are urmatorii pasi:
fiecare operand de tip char se converteste spre tipul int si fiecare operand de tipul float se converteste spre double;
daca unul dintre operanzi este de tip double atunci si celalalt se converteste spre tipul double si rezultatul va avea tipul double;
daca unul dintre operanzi este de tip long, atunci si celalalt se converteste spre tipul long si rezultatul va avea tipul long;
daca unul dintre operanzi este de tip unsigned, atunci si celalalt se converteste spre tipul unsigned si rezultatul va fi de tipul unsigned;
la acest pas se ajunge numai daca ambii operanzi sunt de tip int si deci operatia se executa cu operanzii respectivi, iar rezultatul va fi de tip int.
Aplicand regula de mai sus pas cu pas (la fiecare operator in momentul efectuarii lui), se ajunge in final la evaluarea intregii expresii si prin acesta se determina tipul expresiei. Regula conversiilor implicite nu se aplica pentru operatorul de atribuire (valoarea expresiei din partea dreapta a semnului de atribuire se converteste spre tipul variabilei din stanga semnului egal).
Exemple:
int i, j, k;
float a, b;
double x, y;
unsigned p;
long r;
char c;
expresii conversii tipul expresiei
i-j/k nu int
a/b a spre double; b spre double double
x+y nu double
i+a a spre double; i spre double double
i-3.14 i spre double double
expresii conversii tipul expresiei
i+3 nu int
i+x i spre double double
i-c c spre int int
x+10 10 spre double double
p-10 10 spre unsigned unsigned
r*5 5 spre long long
(double)(i/j) se realizeaza impartirea intreaga intre
i si j si rezultatul se converteste spre double double
Daca rezultatul unei operatii depaseste domeniul de valori ce corespunde tipului rezultatului, valoarea respectiva se trunchiaza si rezultatul este eronat.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 971
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved