0% au considerat acest document util (0 voturi)
79 vizualizări12 pagini

Cap 4

Documentul prezintă operatorii şi expresiile din limbajul C. Sunt descrişi operanzii, operatorii aritmetici, logici şi de atribuire, precum şi regulile de conversie implicită a tipurilor de date şi priorităţile operatorilor.

Încărcat de

Gabriela St
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
79 vizualizări12 pagini

Cap 4

Documentul prezintă operatorii şi expresiile din limbajul C. Sunt descrişi operanzii, operatorii aritmetici, logici şi de atribuire, precum şi regulile de conversie implicită a tipurilor de date şi priorităţile operatorilor.

Încărcat de

Gabriela St
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
Sunteți pe pagina 1/ 12

4.

Operatori şi expresii

Expresiile sunt construcţii sintactice formate dintr-un operand sau mai


mulţi operanzi legaţi prin operatori. Expresiile, într-un program, au o valoare şi un
tip (spre deosebire de matematică, unde au doar valoare).

4.1 Operanzi

Un operand poate fi una din următoarele construcţii:


• un literal
• o constantă simbolică
• o variabilă simplă
• numele unui masiv
• numele unui tip de dată
• numele unei funcţii
• referirea la elementul unui tablou
• referirea la câmpul unei structuri
• apelul unei funcţii
• o expresie
Din ultima posibilitate rezultă că expresia este o construcţie recursivă.
Un operand are un tip şi o valoare. Valoarea se determină fie la compilare,
fie la execuţie. Nu pot fi operanzi şirurile de caractere.

Exemple de operanzi: 4321, 0xabc1 (literali);


Fie declaraţiile:
int a;
int v[100];
a şi v pot fi operanzi în expresii; a are tipul int, iar v are tipul pointer la int.
Ştiinţa învăţării unui limbaj de programare. Teorie

4.2 Operatori

Operatorii se clasifică după diferite criterii, precum: numărul operanzilor


asupra cărora se aplică şi tipul de operaţie pe care o realizează. Majoritatea
operatorilor sunt unari sau binari. Limbajul C utilizează şi un operator ternar (care
se aplică asupra a trei operanzi). După tipul de operaţie realizată, operatorii sunt
aritmetici, logici de relaţie etc.
Într-o expresie apar, de obicei, operatori din aceeaşi clasă, dar pot fi şi din
clase diferite. Se pot scrie expresii complexe care să conţină operatori din toate
clasele. La evaluarea acestor expresii se ţine cont de priorităţile operatorilor
(numite şi clase de precedenţă), de asociativitatea lor şi regula conversiilor
implicite.

4.2.1 Regula conversiilor implicite

Atunci cînd un operator binar se aplică la doi operanzi de tipuri


diferite, înainte de a efectua operaţia, cei doi operanzi sunt aduşi la un tip
comun. În general, operandul de tip inferior se converteşte către tipul
operandului de tip superior.
În primul rînd se convertesc operanzii de tip char către tipul int.
Dacă operatorul se aplică la doi operanzi cu acelaşi tip, nu se face
nici o conversie, rezultatul avînd acelaşi tip cu cei doi operanzi. Dacă
valoarea lui depăşeşte domeniul asociat tipului de dată, rezultatul este eronat
(eroarea de depăşire de domeniu).
Dacă operatorul se aplică la operanzi de tipuri diferite, se face
conversie astfel:
1. dacă un operand este de tipul long double, celălalt se converteşte la acest
tip, iar rezultatul va fi de tip long double,
2. altfel, dacă un operand este de tip double, celălalt se converteşte la acest
tip, iar rezultatul va fi de tip double,
3. altfel, dacă un operand este de tip float, atunci celălalt se converteşte la
acest tip, iar rezultatul va fi de tip float,
4. altfel, dacă un operand este de tip unsigned long, atunci celălalt se
converteşte la acest tip, iar rezultatul va fi de tip unsigned long,
5. altfel, dacă un operand este de tip long, atunci celălalt se converteşte la
acest tip, iar rezultatul va fi de tip long,
6. altfel, unul din operanzi trebuie să fie de tip unsigned, iar celălalt de tip
int; acesta se converteşte la tipul unsigned, iar rezultatul va fi de tip
unsigned.
Operatori şi expresii

Regula se aplică pe rînd pentru fiecare operator din cadrul unei


expresii, obţinînd în final tipul expresiei.

4.2.2 Operatori de atribuire

Spre deosebire de alte limbaje (de exemplu Pascal) în care atribuirea este
executată de o instrucţiune, în C aceasta se realizează prin intermediul unei
expresii cu operator de atribuire.
Forma generală este: v=expresie
unde v este o variabilă simplă, referinţă către un element al unui masiv sau un cîmp
al unei structuri sau o expresie în urma evaluării căreia se obţine o adresă. În C,
entitatea care se poate afla în stînga unui operator de atribuire (care poate primi
valoare) se numeşte left value.
Pentru a se putea efectua atribuirea, tipul expresiei şi tipul entităţii din
stînga operatorului de atribuire trebuie să fie măcar compatibile. Dacă sînt
incompatibile se produce eroare la compilare (deoarece compilatorul nu poate
insera în codul obiect apelurile pentru operaţiile de conversie).
Efectele atribuirii constau în:
• evaluarea expresiei din dreapta operatorului de atribuire, cu determinarea unei
valori şi a unui tip;
• memorarea valorii expresiei din dreapta în variabila din stînga;
• întreaga expresie de atribuire are valoarea şi tipul variabilei din stînga.

Observaţie: În C, o instrucţiune simplă poate fi construită pe baza unei expresii.


De exemplu:
a=23 este o expresie de atribuire;
a=23; este o instrucţiune care provoacă evaluarea expresiei de atribuire;
a<b este o expresie;
a<b; este o instrucţiune care provoacă evaluarea expresiei de atribuire
(rezultatul, în acest caz, nu are semnificaţie algoritmică, deoarece nu este folosit în
nici un fel).
Deoarece atribuirea este o expresie, iar operandul din stînga este o
expresie, în C se pot compune expresii de forma: v1=(v=expresie). Întrucît
operatorul de atribuire are prioritate mică, parantezele nu sînt necesare iar expresia
devine v1=v=expresie. Evaluarea se face de la dreapta, aşa cum sugerează forma
cu paranteze: se evaluează expresia v=expresie, în urma căreia v primeşte o
valoare; aceasta este şi valoarea întregii expresii; această valoare este atribuită lui
v1. În acest mod se pot construi expresii cu mai multe atribuiri succesive.
Dacă este nevoie, înaintea atribuirilor se fac conversii: valoarea care se
atribuie (rezultată în urma evaluării expresiei) este convertită la tipul entităţii care
primeşte valoarea. Ca urmare a acestor conversii pot să apară pierderi de informaţie
sau chiar coruperi totale ale valorii expresiei.
Ştiinţa învăţării unui limbaj de programare. Teorie

Tabelul 4.1 Pierderi de informaţie în expresia de atribuire


Tip destinaţie Tip expresie Pierderi de informaţie
dacă valoarea este mai mare decît 127, destinaţia va fi
signed char unsigned char
un întreg negativ, rezultat imprevizibil
unsigned char [short] int octetul cel mai semnificativ, rezultat imprevizibil
unsigned char long int cei mai semnificativi trei octeţi, rezultat imprevizibil
[short] int long int cei mai semnificativi doi octeţi, rezultat imprevizibil
int float rezultat imprevizibil
float double se reduce precizia (cu rotunjire)
double long double se reduce precizia (cu rotunjire)

Rezultatele imprevizibile provin din faptul că nu se face conversie


propriu-zisă, ci copiere binară din reprezentarea internă a rezultatului evaluării
expresiei către destinaţie.

Exemplu:
int a;
char b;
float c;
b=a=c=180.5;
Lui c i se atribuie valoarea 180.5, lui a i se atribuie valoarea 180, iar lui b i se
atribuie valoarea –76.

Exerciţiu:
#include <stdio.h>
main()
{ signed char a;
unsigned char b=234;
a=b; /* a= -22 */
int c=435;
b=c; /* b=179 */
long int d=435675;
b=d; /* b=219 */
c=d; /* c=-23077 */
float e=-23.123445;
c=e;} /* c=-23 */

Temă: verificaţi exerciţiul anterior, prin includerea unor funcţii de afişare


adecvate.

Operatorul = poate fi combinat cu alţi operatori, obţinînd operatori mai


complecşi, care, pe lîngă atribuire, mai execută o operaţie. Forma generală a noilor
operatori este op=, unde op este un operator binar, aritmetic sau logic pe biţi (/, %,
*, -, +, <<, >>, &, ^, |).
O expresie de forma
v op=expresie
este echivalentă cu
v=v op (expresie)
Operatori şi expresii

Efectele aplicării operatorului compus sînt: se evaluează expresie, se aplică


operatorul op între valoarea lui v şi rezultatul obţinut, iar valoarea obţinută se
atribuie lui v.
Exemplu: expresiile i*=5 şi i=i*5 sînt echivalente.

4.2.3 Operatori aritmetici

În ordinea priorităţii lor, operatorii aritmetici sînt:


i. operatorii unari +, -, ++, --
ii. operatorii binari multiplicativi *, /, %
iii. operatorii binari aditivi +, -

Operaţiile efectuate de aceşti operatori sînt descrise în tabelul următor:

Tabelul 4.2 Operatorii aritmetici


Semnificaţie operaţie Operator
Schimbare semn -
Păstrare semn (nici un efect, nu este folosit) +
Decrementare (post sau pre) --
Incrementare (post sau pre) ++
Adunare +
Scădere -
Înmulţire *
Împărţire /
Împărţire întreagă (cît) /
Împărţire întreagă (rest) %
Observaţie: Cu excepţia operatorului %, care admite numai operanzi întregi,
ceilalţi admit toate tipurile numerice.

Cîţiva dintre operatorii prezentaţi anterior sînt specifici limbajului C şi


necesită unele precizări.

Operatorii ++ şi -- admit operanzi de orice tip scalar. Efectul obţinut


depinde de poziţia lor faţă de operand, astfel:
i. dacă apar înaintea operandului, valoarea acestuia este modificată înainte de a fi
utilizată la evaluarea expresiei din care face parte (++var sau --var: preincremen-
tare/predecrementare);
ii. dacă apar după operand, valoarea acestuia este folosită la evaluarea expresiei din
care face parte, apoi este modificată (var++ sau var--: postincrementare/
postdecrementare).
Incrementarea/decrementarea au ca efect modificarea valorii operandului
cu o unitate. Semnificaţia unei unităţi depinde de tipul operandului asupra căruia se
aplică. Pentru operanzi numerici, o unitate înseamnă unu.
Ştiinţa învăţării unui limbaj de programare. Teorie

Exemplu:
y=x++; este echivalent cu secvenţa y=x; x=x+1;
y=--x este echivalent cu secvenţa x=x-1; y=x;

Operatorul % are ca rol obţinerea restului unei împărţiri întregi. El este


similar cu operatorul mod din Pascal.
Operatorul / are efect diferit, în funcţie de tipul operanzilor:
i. dacă cel puţin un operand este de tip real, se execută împărţire reală;
ii. dacă ambii operanzi sînt întregi, se execută împărţire întreagă şi se obţine cîtul.
În limbajul C, calculul cîtului şi restului unei împărţiri întregi se poate
realiza şi prin intermediul funcţiei div. Rezultatul funcţiei are tipul div_t, definit în
biblioteca stdlib.h astfel:
typedef struct { long int quot; //cît
long int rem; //rest
} div_t;

Exemplu: determinarea cîtului (cit) şi restului (rest) împărţirii numărului m la


numărul n se realizează astfel:
div_t x;
int m,n,cit,rest;
x=div(m,n);
cit=x.quot;
rest=x.rem;

4.2.4 Operatori logici şi relaţionali

Operatorii logici sînt prezentaţi în tabelul 4.3 (în ordinea priorităţii), iar
operatorii relaţionali în tabelul 4.4.
Tabelul 4.3 Operatorii logici
Semnificaţie operaţie Operator
Negare !
Şi logic &&
Sau logic ||
Sau exclusiv Nu există

În limbajul C nu există tipul de dată logic. Operanzii asupra cărora se


aplică operatorii logici sînt convertiţi în valori numerice şi interpretaţi conform
convenţiei: adevărat pentru valoare nenulă şi fals pentru zero. Rezultatul unei
operaţii logice este de tip int, conform convenţiei: pentru adevărat valoarea 1, iar
pentru fals valoarea 0.
La evaluarea expresiilor logice se aplică principiul evaluării parţiale: dacă
expresia este de tip aditiv (operanzi legaţi prin operatorul sau), în momentul în care
s-a stabilit că un operand are valoarea adevărat toată expresia va fi adevărată şi nu
se mai evaluează restul operanzilor. Asemănător, pentru o expresie multiplicativă
(operanzi legaţi prin operatorul şi), dacă un operand are valoarea fals, expresia are
valoarea fals şi nu se mai evaluează restul operanzilor.
Operatori şi expresii

Operaţia sau exclusiv între doi operanzi a şi b se efectuează cu expresia:

!a&&b||!b&&a

a b !a !b !a&&b !b&&a !a&&b||!b&&a


0 0 1 1 0 0 0
diferit de diferit de
0 0 0 0 0
0 0
diferit de
0 0 1 0 1 1
0
diferit de
0 1 0 1 1 1
0

Rezultatul unei operaţii relaţionale este de tip int, conform convenţiei:


pentru adevărat valoarea 1, iar pentru fals valoarea 0. Pentru a nu se greşi la
evaluările unor expresii complexe, este indicat să se facă raţionamentul bazat pe
logica booleană (cu valori de adevărat şi fals).

Tabelul 4.4 Operatorii relaţionali


Semnificaţie operaţie Operator
Mai mare >
Mai mare sau egal >=
Mai mic <
Mai mic sau egal <=
Egal ==
Diferit !=

Exemplu: expresia a<0||b<0 are valoarea 1, dacă cel puţin unul din operanzii a şi
b este negativ, respectiv valoarea 0 în caz contrar.

4.2.5 Operatori la nivel de bit

Limbajul C permite operaţii pe biţi, ca şi Pascal. Operatorii folosiţi sînt


prezentaţi în tabelul 4.5.
Tabelul 4.5. Operaţii pe biţi
Semnificaţie operaţie Simbol operator
Şi logic pe biţi &
Sau logic pe biţi |
Sau exclusiv logic pe biţi ^
Negare (complement faţă de 1) ~
Deplasare la dreapta >>
Deplasare la stînga <<
Ştiinţa învăţării unui limbaj de programare. Teorie

Operanzii pot fi de orice tip întreg. Dacă este nevoie, operanzii sînt extinşi
la reprezentare pe 16 biţi. Execuţia are loc bit cu bit. Pentru o pereche de biţi (x,y),
valorile posibile rezultate în urma aplicării operatorilor logici la nivel de bit sînt
prezentate în tabelul 4.6.

Tabelul 4.6 Rezultatele operaţiilor logice pe biţi


x y x&y x|y x^y ~x
0 0 0 0 0 1
0 1 0 1 1 1
1 0 0 1 1 0
1 1 1 1 0 0
Exemple:
char i=23,
j=0xf2; /* j are valoarea 242 */
i&j; /* rezultatul este 18 */
i|j; /* rezultatul este 247 */
i^j; /* rezultatul este 229 */
~i; /* rezultatul este -24 */
~1234 se reprezintă binar 10011010010; se extinde la 16 biţi:
0000010011010010; apoi se aplică operatorul de complementare faţă de 1:
1111101100101101 (64301 dacă operandul era fără semn, -1235 dacă era cu
semn).
~-1234 se reprezintă binar 10011010010; se extinde la 16 biţi:
0000010011010010; se negativează: 1111101100101110; apoi se aplică operatorul
de complementare faţă de 1: 0000010011010001 (1233).
-~1234 se reprezintă binar 10011010010; se aplică operatorul de
complementare faţă de 1: 1111101100101101; apoi se negativează: 10011010011
(1235).
Temă: verificaţi exemplele anterioare, prin includerea unor funcţii de afişare
adecvate.

Operaţiile de deplasare au următoarea sintaxă:

operand<<număr_poziţii şi operand>>număr_poziţii

Operanzii sînt de tip întreg, iar număr_poziţii indică numărul de biţi cu care se
deplasează valoarea. La deplasare se propagă valoarea 0, la stînga sau la dreapta.

Exemplu: 21<<1 are valoarea 42: 00010101<<1 = 00101010


21>>2 are valoarea 5: 00010101>>2 = 00000101

Dacă tipul primului operand este unsigned, deplasarea spre stînga este
echivalentă cu valoare=valoare*2număr_poziţii, iar deplasarea spre dreapta este
echivalentă cu valoare= [valoare/2număr_poziţii], unde parantezele drepte semnifică
partea întreagă a cîtului.
Operatori şi expresii

Operaţia de “mascare” (reţinerea biţilor care interesează dintr-o valoare şi


anularea celorlalţi) este des întîlnită în aplicaţii. Reţinerea valorii bitului din poziţia
p dintr-un număr a (se consideră cazul reprezentării pe un octet) se poate face prin
deplasarea la stînga a lui a cu p-1 poziţii şi efectuarea operaţiei & cu masca 0x1 (cu
reprezentarea 00000001) sau, echivalent, prin “mascarea” lui a cu 2p-1 şi deplasare
la stînga cu p-1 poziţii.

Exemple:
1. Următoarea secvenţă afişează, în ordine, biţii unui octet (dată de tip char).
char c;
scanf("%d",&c);
for(int i=0;i<8;i++)
printf("%d",(c&((int)pow(2,7-i)))>>7-i);

2. Următoarea secvenţă afişează, în ordine inversă, biţii unui octet (dată de tip
char).
char c;
scanf("%d",&c);
for(int i=0;i<8;i++,c=c>>1)
printf("%d",c&1);

4.2.6 Operatorul “,” (virgulă)

Operatorul “,” este, de asemenea, specific limbajului C, nefiind


implementat în Pascal. Pe lîngă rolul de separator într-o listă, virgula este
considerată şi operator, într-o secvenţă de forma:

expresie_1, expresie_2, ..., expresie_n;

Operatorul “,” induce evaluarea succesivă, de la stînga la dreapta, a


expresiilor, întreaga secvenţă fiind tratată ca o expresie căreia i se atribuie în final
valoarea şi tipul corespunzătoare ultimei expresii evaluate (expresie_n).
Acest operator se utilizează acolo unde este legal să apară o expresie în
program şi dorim să realizăm un calcul complex, exprimat prin mai multe expresii.

Exemplu:
int a=10, b=3, c, d;
d=(c=a+b, b+=c, a/2);
Valorile variabilelor după evaluarea expresiei sînt: a = 10, c = 13, b = 16, d = 5.

Notă: În limbajul C, construcţia care utilizează perechi de paranteze rotunde de


tipul (expresie) este considerată o expresie, tipul ei depinzînd de regulile expresiei
interioare.
Ştiinţa învăţării unui limbaj de programare. Teorie

4.2.7 Operatorul de conversie explicită

Asemănător limbajului Pascal, se poate converti explicit tipul unei expresii


către un tip dorit de utilizator (dar compatibil). Expresia de conversie este
asemănătoare cu cea din Pascal, doar sintaxa diferă minor (parantezele includ tipul
spre care se converteşte, nu operandul care se converteşte, ca în Pascal). Forma
generală este:
(tip)operand

Se observă că acest operator nu are un simbol explicit. El este format din


numele unui tip de dată inclus între paranteze. Construcţia este numită expresie
cast (conversia explicită se numeşte typecast). Trebuie reţinut că nu se schimbă
efectiv tipul operandului, doar se foloseşte în expresie valoarea operandului
convertită la un alt tip. Operaţia de conversie de tip nu are efect permanent.

Exemple: int a=7;


float b=(float)a;
După executarea secvenţei, a are valoarea 7 (nu 7.0) nefiind afectată în nici un fel
de operaţia de conversie de tip. B are valoarea 7.0 (obţinută prin conversia valorii
lui a către tipul float).

int a=7;
float b=9.3;
int c;
c=a+int(b);
După executarea secvenţei, c are valoarea 16, obţinută prin adunarea valorii lui a
(7) şi a celei rezultate prin conversia valorii lui b către tipul întreg (9).

4.2.8 Operatorul dimensiune

Operatorul dimensiune este folosit pentru a afla dimensiunea în octeţi a


spaţiului de memorie ocupat de o variabilă de un tip oarecare. Simbolul său este
sizeof şi poate fi folosit în una din formele:

sizeof var
sizeof(var)
sizeof(tip)
unde tip este numele unui tip de dată sau descrierea unui tip de dată, iar var poate fi
numele unei variabile simple, numele unui masiv, numele unei structuri, referirea
la un element al unui masiv sau la un cîmp al unei structuri.
În primele două forme, rezultatul va fi numărul de octeţi alocaţi entităţii
respective. Pentru ultima formă, rezultatul este numărul de octeţi care se alocă
pentru a reprezenta o variabilă de tipul tip.
Operatori şi expresii

Exemple:
int x;
sizeof(x) are valoarea 2
sizeof(int) are valoarea 2

long double a[10];


sizeof(a[4]) are valoarea 10 (tipul long double se reprezintă pe 10 octeţi)
sizeof(a) are valoarea 100 (10 elemente de tip long double)

4.2.9 Operatorii paranteze

Parantezele au rolul de a include o expresie sau lista de parametri a


funcţiilor. Prin includerea subexpresiilor între paranteze se modifică ordinea de
evaluare a unei expresii.
Prin includerea unei expresii între paranteze se obţine un operand, asupra
căruia nu se pot aplica însă orice operatori; de exemplu, nu se pot aplica operatorii
de incrementare/decrementare.

Exemplu: construcţiile (i*5)++ sau --(a+b) sînt eronate.

La apelul unei funcţii, parantezele rotunde sînt numite operatori de apel de


funcţie, ele delimitînd lista parametrilor reali.
Parantezele pătrate au rolul de a include expresii care reprezintă indici
pentru accesarea elementelor unui masiv. Ele se numesc operatori de indexare.

4.2.10 Operatorul condiţional

Operatorul condiţional este singurul care are trei operanzi şi este specific
limbajului C. Forma generală este:

expresie_1?expresie_2:expresie_3

unde expresie_1, expresie_2 şi expresie_3 sînt expresii. Operatorul condiţional are


simbolul ?:. Cele două caractere care compun simbolul apar intercalate între cei 3
operanzi, conform formei generale. Construcţia se numeşte expresie condiţională.
Valoarea şi tipul acestei expresii sînt identice cu ale lui expresie_2 – dacă
expresie_1 este adevărată (nenulă) – sau cu ale lui expresie_3 – dacă expresie_1
este falsă (zero).

Exemplu:
int a=7,b=9,c;
c=(a>b)?a:b;
Variabila c primeşte valoarea maximă dintre a şi b (în exemplul de mai sus, 9).
Ştiinţa învăţării unui limbaj de programare. Teorie

4.2.11 Alţi operatori


În limbajul C mai sînt disponibili următorii operatori:
i. operatorul de calificare (cu simbolul . – caracterul punct), folosit pentru a
accesa un cîmp al unei structuri, ca în Pascal;
ii. operatorul de calificare (cu simbolul ->) folosit pentru a accesa un cîmp atunci
cînd se ştie adresa unei structuri;
iii. operatorul de referenţiere (cu simbolul &) folosit pentru a extrage adresa unei
variabile;
iv. operatorul de referenţiere (cu simbolul *) folosit pentru a defini un pointer;
v. operatorul de dereferenţiere (cu simbolul *) folosit pentru a extrage valoarea de
la o anumită adresă.
Ultimii operatori vor fi studiaţi în capitolul destinat lucrului cu adrese.

4.2.12 Evaluarea expresiilor


Expresiile sînt evaluate pe baza următoarelor reguli:
- Precedenţa: determină ordinea de efectuare a operaţiilor într-o expresie în care
intervin mai mulţi operatori (gradul de prioritate);
- Asociativitatea: indică ordinea de efectuare a operaţiilor în cazul unui set de
operatori cu aceeaşi precedenţă;
- Regulile de conversie de tip: asigură stabilirea unui tip comun pentru ambii
operanzi, pentru fiecare operaţie care solicită acest lucru şi în care tipurile diferă.
Asociativitatea şi precedenţa operatorilor (începînd cu prioritatea maximă)
sînt redate în tabelul 4.7.
Tabelul 4.7 Precedenţa operatorilor
Operatori Asociativitate Grad de prioritate
() [] . -> de la stînga la dreapta maxim
+ - & * (unari) ++ -- (tip) de la dreapta la stînga
sizeof ! ~
* (binar) / % de la stînga la dreapta
+ - (binari)
<< >>
< <= > >=
== !=
& (binar)
^
|
&&
||
?:
= <<= >>= += -= *= /= %= &= ^= de la dreapta la stînga
|=
, de la stînga la dreapta minimă

S-ar putea să vă placă și