O expresie este formata din operanzi, operatori si paranteze pentru prioritate, si are o valoare si un tip. Asocierea operatorilor se face de la stanga la dreapta, cu exceptia operatorilor unari si de atribuire, care se asociaza de la dreapta la stanga.
Operanzii pot fi: constante, constante simbolice, variabile simple sau structurate (tablouri, structuri, sau elemente ale acestora), functii sau apeluri de functii.
Operatorii, in ordinea descrescatoare a prioritatii sunt urmatorii:
à | |||||||||||
à |
(unar) |
(unar) |
(unar) |
& (unar) |
(tip) |
sizeof | |||||
à | |||||||||||
à | |||||||||||
à |
<< |
>> | |||||||||
à |
< |
<= |
>= |
> | |||||||
à | |||||||||||
à |
& | ||||||||||
à | |||||||||||
à | |||||||||||
à |
&& | ||||||||||
à | |||||||||||
à |
(ternar) | ||||||||||
à |
<<= |
>>= |
&= | ||||||||
à |
Operatorii aritmetici sunt urmatorii:
+ , * , / , % (mod), pentru adunare, scadere, inmultire, cat (impartire), rest.
Exemple:
int i, j ;
int cat = i / j; // 13 / 5 = 2
int rest = i % j; // 13%5 = 3
Operatorii relationali sunt urmatorii:
< , <= , > , >= , == , != , pentru < , £ , > , ³ = , ¹ rezultatul (valoarea expresiei relationale) fiind 1 pentru adevarat, iar 0 pentru fals.
Exemple:
int i=1; int j=2 ;
i<=j // == 1
i==j // == 0
Operatorii logici sunt:
! (Not) , && (And) , | | (Or).
Exemplu:
Xor = !x&&y || x&&!y // x Xor y = Not x And y Or x And Not y
Deoarece nu exista tipul boolean, valoarea fals este reprezentata prin 0, iar adevarat prin orice valoare diferita de 0.
Operatii pe biti se pot realiza utilizand urmatorii operatori:
~ (complementul fata de FFFF, schimba fiecare bit), << (deplasare la stanga), >> (deplasare la dreapta), & (And bit cu bit), ^ (Xor bit cu bit), | (Or bit cu bit
Exemplu:
// ASCII
#include <stdio.h>;
#include <conio.h>;
int Cifra(int c) // cifra hexa: 019ABF
int c;
void main (void)
while (c!=0x1B);
Operatia de atribuire se realizeaza astfel:
Var = Expresie // expresie de atribuire cu tipul Var
Exista posibilitatea realizarii de atribuiri multiple prin expresii de forma:
Varn = = Var2 = Var1 = Expresie
Mai exista o facilitate utilizand o operatie de atribuire de forma:
Var ¯= Expresie // unde ¯I
avand semnificatia:
Var = Var ¯ Expresie
Exemple:
v = e = 2.7181828; // v = (e = 2.7181828);
x += dx; y = dy; // x = x dx; y = y dy;
n <<= k; // n = n 2k
Operatorii de incrementare / decrementare sunt ' ' respectiv ' ' prin care se mareste, respectiv se micsoreaza, valoarea operandului cu unu.
Acestia pot fi utilizati:
à in forma prefixata:
operand respectiv operand valoarea expresiei, dupa aplicarea lor
à in forma postfixata:
operand respectiv operand // valoarea expresiei, inainte de aplicare
Exemple:
a = b; // b=b+1; a=b;
a = b // a=b; b=b
Operatorul de conversie explicita (expresie cast) realizeaza conversia unui operand intr-un tip precizat astfel:
(Tip) operand
Exemplu:
int a=12; int b=5;
float c=a/b; printf(' a Div b = %5.2f n', c); // a Div b = 2.00
c=(float)a/b; printf(' a / b = %5.2f n', c); // a / b = 2.40
Conversiile implicite (realizate automat) se fac astfel:
a) char int
b) float double
c) (double, (double,double)=double,
d) (long, (long,long)=long,
e) (unsigned, (unsigned,unsigned)=unsigned.
Operatorul pentru dimensiune (sizeof) determina lungimea in octeti a unei variabile simple sau structurate, precum si a unui tip de data
sizeof Data
Exemplu:
int a;
printf(' SizeOf int = %d n', sizeof(a)); // SizeOf int
printf(' SizeOf short = %d n', sizeof(short)); // SizeOf short
Operatorii conditionali sunt utilizati in constructii de forma:
Expresie Expresie Expresie
Valoarea expresiei rezultat este Expresie daca Expresie este nenula, altfel este Expresie
Exemplu:
Max = a>b a b; // Daca a>b Atunci Max=a Altfel Max=b;
Operatorul virgula permite gruparea mai multor expresii intr-una singura, aceasta avand valoarea ultimei expresii:
Expresie Expresie Expresien
Exemplu:
float x ,y ,r, x, y;
printf(' Dati C(x ,y ,r) = '); scanf(' f f f',&x ,&y ,&r); // Cercul C
printf(' Dati P(x,y) = '); scanf(' f f', &x, &y ); // Punctul P
printf(' s',((x-=x y-=y x =x, y =y, x+y)==r r) ? P e pe C 'P nu e pe C
|