Оператори

У овом поглављу ћемо се упознати са одређеним врстама оператора и видети чему они служе. То су оператори доодељивања, аритметички оператори и оператори поређења. Поред тога, видећемо и какав приоритет важи међу њима.

Оператор додељивања. Оператор додељивања поставља вредност променљиве.


Сада ћемо показати како се некој нашој промељивој додељује вредност коришћењем оператора додељивања = :

//Navodimo tip i ime promenljivih koje hocemo da koristimo 
int a ;  
int b ;   
//Nasoj promenljivoj a dodeljujemo vrednost 5, a promenljivoj b vrednost 13                          
a = 5;
b = 13;

Аритметички оператори. Аритметички оператори извршавају аритметичке операције. Постоји пет аритметичких оператора ( видети табелу која следи ).


У следећим изразима приказана је употреба оператора сабирања(+), одузимања(-), множења(*) и дељења (/), респективно :

1 + 2
3 - 2
2 * 5
10 / 3
     
Оператори поређења. Оператори поређења упоређују однос између вредности и враћају Boolean вредност ( true ili false ). Постоји шест оператора поређења ( види следећу табелу ).


Напомена: Водите рачуна о разлици између оператора ( == ), који пореди две вредности и оператора доделе ( = )који врши додељивање вредности.

Шта враћају следећи изрази као повратну вредност ?

//Pitamo se, da li je 10 manje od 3 ? Kako ovo nije ispunjeno ovaj izraz vraća false 
10  < 3 
//Pitamo se, da li je 10 manje od ili jednako 3 ?   
//Kako ovo nije ispunjeno ovaj izraz vraća false 
10 <= 3 
//Pitamo se, da li je 10 različito od 3 ? Kako je ovo ispunjeno ovaj izraz vraća true
10 != 3  
//Pitamo se, da li je 10 veće od 3 ? Kako je ovo ispunjeno ovaj izraz vraća true 
10  > 3 
//Pitamo se, da li je 10 veće od ili jednako 3 ? 
//Kako je ovo ispunjeno ovaj izraz vraća true  
10 >= 3            
      
Приоритет оператора.
Када пишемо израз који садржи више од једног оператора, компајлер користи скуп правила која одређују који оператор треба применити први, други, трећи и тако даље док се не израчуна цео израз. Сваки оператор има уграђени приоритет, или првенство, које компајлер користи да би одредио који оператор треба следеће применити. Погледајмо један пример који додељује вредност променљивој типа int, која се зове mojBroj :

int mojBroj = 2 + 5 * 10 ;  
   	

Иницијално, можемо мислити да је вредност која се додељује променљивој mojBroj 70, јер је 2 + 5 = 7,
а 7 * 10 = 70, зар не ? Погрешно ! Оператор множења ( * ) има већи приоритет, или веће првенство, од оператора сабирања ( + ), па се десна страна израза израчунава на следећи начин: 5 * 10 = 50, 2 + 50 = 52. Због тога се променљивој mojBroj додељује вредност 52. Међутим, приоритет оператора се може прегазити коришћењем заграда. на пример :

int mojBroj = (2 + 5) * 10 ;  
   	

С обзиром да је 2 + 5 стављено у заграде, оно се прво израчунава. Тако је, 2 + 5 = 7, а 7 * 10 = 70. Због тога се променљивој mojBroj додељује вредност 70. Погледајмо други пример :

int mojBroj = 2 * 20 / 5 ;  
   	

Оператор множења ( * ) и дељења ( / ) имају исти приоритет, па се оператори извршавају слева надесно. Тако се, прво израчунава 2 * 20 = 40, а затим 40 / 5 = 8. Због тога се, променљивој mojBroj додељује вредност 8.

У C# има велики број оператора и ови оператори се могу груписати у категорије које имају исти приоритет. Следећа табела нам говори о редоследу првенства оператора - прво је показана категорија са највећим приоритетом.У овој табели приказане су категорије оператора и оператори за сваку категорију по редоследу првенства.


Када се операнд стави између два оператора са истим приоритетом, редослед операције која ће се извршити одређује асоцијативност оператора. Са изузетком додељувања оператора, оператори који користе два операнда ( нпр. оператор сабирања ) су лево асоцијативни - што значи да се операције извршавају слева надесно. Оператори додељивања и троструки оператори су десно асоцијативни - што значи да се операције извршавају с десна на лево.

Још објашњења и конкретних примера видећете у поглављима о целобројном и реалном типу. Биће посебних примера везаних за целобројни тип и посебних везаних за реални тип.