Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Regula conversiilor implicite

c



+ Font mai mare | - Font mai mic



Regula conversiilor implicite

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



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 886
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved