43,44 - Operatori jezika. Operator dodele vrednosti. Aritmetički operatori
Operatori
- Operatori su simboli koji označavaju određenu operaciju i koji povezuju jedan ili više operanada u izraz.
U zavisnosti od broja operanada operatori u C-u se dele na:
- unarne,
- binarne,
- ternarne.
Grupe operatora u odnosu na funkcionalnost:
- operatori za pristup članovima polja i struktura
- operator za poziv funkcije
- aritmetički operatori
- relacioni operatori
- logički operatori
- operatori za rad sa bitovima
- operatori dodeljivanja vrednosti
- operator grananja
- sizeof- operator
- comma operator
- cast operator
- operatori referenciranja i dereferenciranja
Operator dodele
- Ovo je binarni operator koji smešta vrednost desnog operanda na lokaciju čije se ime nalazi sa leve strane operatora.
- Levi operand mora biti ime memorijske lokacije.
Postoje dve grupe ovakvog operatora:
- elementarni operator dodeljivanja (=),
- složeni operatori dodeljivanja (opšti oblik ovih operatora je <op>=)
Operator <op> može biti jedan od sledećih:
+, -, *, /, %, <<, >>, &, |, ^.
Opšti izraz a <op> = b se može napisati i u obliku a = a <op> b
Primeri:
1 2 3 |
a += 3; //ekvivalntno: a = a+3; b -= a; //ekvivalentno: b = b-a; proizvod *= a-5; // proizvod = proizvod*(a-5); |
Aritmetički operatori
- Imaju numeričke operande i rezultati su, takođe, numeričkog tipa.
Unarni operatori + i -
- Unarni operator - menja znak operanda koji sledi.
- Ako je operand unsigned, rezultat se računa oduzimanjem operanda
od 2n , gde je n broj bitova u binarnoj predstavi tipa rezultata.
- Unarni operator + zadržava znak operanda koji sledi (to znači da je on praktično operator bez dejstva).
Operatori inkrementiranja (++) i dekrementiranja (--)
- Ovi operatori su unarni i mogu biti prefiksni i postfiksni.
- Oni vrše povećanje (smanjenje) vrednosti svog operanda za 1.
- Rezultat izraza sa prefiksnim operatorima ++ (ili --) je nova vrednost operanda, dok je rezultat izraza sa postfiksnim operatorom, stara vrednost operanda.
To znači da:
Ukoliko se vrednost izraza ++a (ili --a) koristi u nekom širem izrazu, prvo će se izvršiti promena vrednosti promenljive a i ta promenjena vrednost će se iskoristiti za izračunavanje vrednosti šireg izraza.
Ukoliko se vrednost izraza a++ (ili a--) koristi u nekom širem izrazu, izvršiće se izračunavanje vrednosti šireg izraza sa starom vrednošću promenljive a i nakon toga će se izvršiti promena vrednosti promenljive a.
Operatori *, /, %
* - označava množenje;
/ - označava deljenje (u slučaju primene nad celobrojnim podacima predstavlja celobrojno deljenje, tj. u rezultatu se vrši jednostavno odbacivanje cifara iza decimalne tačke);
5 / 2 = 2
% - (po modulu) označava ostatak deljenja i primenjuje se isključivo nad celobrojnim podacima.
5 % 2 = 1
Binarni operatori + i -
+ - označava sabiranje,
– - označava oduzimanje
Primeri:
1 2 3 4 |
int a,b,c,d; a=3; b=6; c=a*--b; //ekvivalentne naredbe: b=b-1; c=a*b; d=a*b--; //ekvivalentne naredbe: d=a*b; b=b-1; |