CATEGORII DOCUMENTE |
DOCUMENTE SIMILARE |
|
TERMENI importanti pentru acest document |
|
Regula conversiilor implicite si precedenta operatorilor
Regula conversiilor implicite se aplica la evaluarea expresiilor. Ea actioneaza atunci cand un operator binar se aplica la doi operanzi de tipuri diferite. In acest caz, operandul de tip inferior se converteste spre tipul superior al celuilalt operand si rezultatul este de tip superior.
Inainte de toate se convertesc operanzii de tip char si enum in tipul int.
Daca operatorul curent se aplica la operanzi de acelasi tip, atunci se executa operatorul respectiv, iar tipul rezultatului coincide cu tipul comun al operanzilor. Daca rezultatul aplicarii operatorului reprezinta o valoare in afara limitelor tipului respectiv, atunci rezultatul este eronat (are loc o "depasire").
Exemplu: Rezultatul impartiirii 7/3 este 2 si nu 2.5 deoarece cei doi operanzi sunt de tip intreg si prin urmare rezultatul (care este de tip real) este si el convertit la tipul intreg.
Daca operatorul binar se aplica la operanzi de tipuri diferite, atunci se face o conversie inainte de executia operatorului, conform algoritmului umator:
Daca unul din operanzi este de tip long double, atunci celalalt operand se converteste spre tipul long double iar tipul rezultatului aplicarii operatorului este de asemenea de tip long double.
Altfel, daca unul din operanzi este de tip double atunci celalalt operand se converteste spre tipul double iar tipul rezultatului aplicarii operatorului este de asemenea de tip double.
Altfel, daca unul din operanzi este de tip float atunci celalalt operand se converteste spre tipul float iar tipul rezultatului aplicarii operatorului este de asemenea de tip float.
Altfel, daca unul din operanzi este de tip unsigned long atunci celalalt operand se converteste spre tipul unsigned long iar tipul rezultatului aplicarii operatorului este de asemenea de tip unsigned long.
Altfel, daca unul din operanzi este de tip long atunci celalalt operand se converteste spre tipul long iar tipul rezultatului aplicarii operatorului este de asemenea de tip long.
Altfel, unul din operanzi trebuie sa fie de tip unsigned, celalalt de tip int si acesta se converteste spre tipul unsigned, iar tipul rezultatului aplicarii operatorului este de tip unsigned.
Precedentele operatorilor C sunt prezentate in tabelul urmator. Operatorii aflati pe aceeasi linie au aceeasi prioritate. Ei se asociaza de la stanga la dreapta, exceptand operatorii unari, conditionali si de atribuire, care se asociaza de la dreapta la stanga.
|
Precedenta |
Operatorul |
|||
Inalta Scazuta |
() [ ] -> . ! ~ ++ -- - (type) * & sizeof * / % + - << >> < <= > >= == != & ^ | && || ? : = += -= *= /= , |
DISTRIBUIE DOCUMENTUL
Comenteaza documentul:Te rugam sa te autentifici sau sa iti faci cont pentru a putea comentaCreaza cont nou Termeni si conditii de utilizare | Contact
|