Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Prioritatea operatorilor

c


Prioritatea operatorilor

Prioritatea operatorilor determina ordinea în care acestia se aplica asupra unei valori. Operatorii C++ sunt împartiti în 18 grupe de prioritate, care va sunt prezentate în Tabelul D.1. Cei din grupa 1 au prioritatea cea mai mare. Daca doi operatori se aplica asupra aceluiasi operand (ceva pe care opereaz 15215h717p a un operator), atunci se va aplica mai întâi operatorul cu prioritatea mai mare. Daca cei doi operatori au aceeasi prioritate, C++ va folosi reguli de asociativitate pentru a determina care operator este legat mai îndeaproape de operand. Toti operatorii din aceeasi grupa au aceeasi prioritate si acelasi tip de asociativitate, care este sau de la stânga la dreapta (S-D în tabel), sau de la dreapta la stânga (D-S în tabel). Asociativitatea de la stânga la dreapta presupune aplicarea mai întâi a operatorului din stânga, iar asociativitatea de la dreapta la stânga presupune aplicarea mai întâi a operatorului din dreapta.



Unele simboluri, cum ar fi sau &, sunt utilizate pentru mai multi operatori. În acest caz, unul dintre operatori este unar (se aplica unui singur operand), iar celalalt este binar (se aplica la doi operanzi), iar compilatorul determina din context care se aplica. Grupele de operatori sunt etichetate în tabel (unar sau binar) pentru cazurile în care acelasi simbol are mai multe semnificatii.

Iata câteva exemple de prioritati si de asociativitate:

3 + 5 * 6

Operatorul are prioritatea mai mare decât deci se aplica primul lui , expresia devenind , sau

120 / 6 * 5

si au aceeasi prioritate, dar se asociaza de la stânga la dreapta. Adica, operatorul din stânga operandului comun (6) se aplica primul, deci expresia devine , sau

char * sir = "Ho";

char ch = *sir++;

Operatorii unari si au aceeasi prioritate, dar se asociaza de la dreapta la stânga. Adica, operatorul de incrementare opereaza asupra lui sir si nu asupra lui *sir. Deci, operatia incrementeaza pointerul, care va indica urmatorul caracter, si nu modifica valoarea caracterului indicat. Totusi, deoarece este în forma postfixata, pointerul este incrementat dupa ce valoarea originala a lui *sir a fost atribuita lui ch. Prin urmare, expresia atribuie lui ch caracterul H iar apoi modifica pointerul sir sa indice caracterul o

Observati ca în tabel se noteaza unar sau binar în coloana de prioritate pentru a putea deosebi doi operatori care folosesc acelasi simbol, cum ar fi operatorul de adresa unar si operatorul binar sI pe biti.

Tabelul D.1 Prioritatea si asociativitatea operatorilor în C++

Prioritate    Operator Asociativitate Explicatie

Operator de vizibilitate

(expresie) Grupare

S-D Apel de functie

Constructie de valoare, adica type (expr)

Indici de tablou

-> Operator de apartenenta indirect

Operator de apartenenta direct

const_cast Conversie de tip specializata

dynamic_cast Conversie de tip specializata

reinterpret_cast Conversie de tip specializata

static_cast Conversie de tip specializata

typeid Identificare de tip

Operator de incrementare, postfixat

Operator de decrementare, postfixat

3(unare) D-S Negare logica

Negare pe biti

Plus unar (semn pozitiv)

Minus unar (semn negativ)

Operator de incrementare, prefixat

Operator de decrementare, prefixat

& Adresa

Dereferentiere (valoare indirecta)

Modificare de tip, adica (type) expr

sizeof Dimensiunea în octeti

new Alocare dinamica de memorie

new [] Alocare dinamica a unui tablou de memorie

delete Eliberare dinamica a memoriei

delete [] Eliberare dinamica a unui tablou de memorie

S-D Dereferentiere a membrului

->* Dereferentiere indirecta a membrului

5(binare) S-D Înmultire

Împartire

(N.T.: Trebuie Modulo (rest)

6(binare) S-D Adunare

Scadere

<< S-D Deplasare la stânga

>> Deplasare la dreapta

< S-D Mai mic

<= Mai mic sau egal

>= Mai mare sau egal

> Mai mare

S-D Egal

Diferit

10(binare) & S-D sI pe biti

S-D SAU exclusiv (XOR) pe biti

S-D SAU pe biti

&& S-D sI logic

S-D SAU logic

D-S Atribuire simpla

Înmultire si atribuire

Împartire si atribuire

Modulo si atribuire

Adunare si atribuire

Scadere si atribuire

&= sI pe biti si atribuire

SAU exclusiv (XOR) pe biti si atribuire

SAU pe biti si atribuire

<<= Deplasare la stânga si atribuire

>>= Deplasare la dreapta si atribuire

D-S Conditie

throw S-D Arunca exceptie

S-D Combina doua expresii într-una



Document Info


Accesari: 10486
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )