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;
Poslednja izmena: четвртак, 22. фебруар 2018, 16:13