Аритметички изрази служе за обраду нумеричких података и као резултат дају број. Сабирање, одузимање, множење, дељење, одређивање остатка при дељењу два цела броја су примери аритметичких израза.
Аритметички изрази могу бити:
једноставни - састоје се само од једног операнда
сложени – састоје се од два или више операнaда повезаних аритметичким операторима
Операнди могу бити:
• целобројне и реалне константе
• целобројне и реалне променљива
• елемент низа
• позив целобројних и реалних функције
• аритметички изрази у заградама
Рекли смо да су операнди у аритметичким изразима међусобно повезани операторима и да су у питању аритметички оператори. Подсетићемо се аритметичких оператора и њихових функција, као и поделе на унарне и бинарне. Унарни оператори раде са једним операндом, а бинарни раде са два операнда.
Слика 5.1. Аритметички оператори
Аритметички оператори су дефинисани за све нумеричке типове података.
Оператори + , - , * , / представљају основне аритметичке операције сабирања, одузимања, множења и дељења..
Оператор дељења / означава различите операције у зависности од типа својих операнада. То нам показује и следећи пример.
Пример 1. Израчунати вредност количника:
а) 9 / 5
б) 9.0 / 5.0
в) 9.0 / 5
а) Израз 9 / 5 има вредност 1, што значи да када се оператор дељења примењује на две целобројне вредности, као резултат се добија цео број (цео део количника). Тада кажемо да је у питању целобројно дељење.
б) У овом изразу се примењује реално дељење јер су операнди реалног типа, па израз 9.0 / 5.0 има вредност 1.8.
в) Пошто је у изразу 9.0 / 5 бар један операнд реалног типа, примењујемо реално дељење, па овај израз има вредност 1.8 .
Оператор % је могуће применити искључиво на операндима целобројног типа. Користи се за одређивање остатка при дељењу првог операнда другим, као на пример, 5 % 2 = 1, 16 % 4 = 0.
Оператори инкрементирања ++ (увећавања за 1) и декрементирања -- (умањивања за 1) су унарни оператори које се могу употребити у префиксном (++n и --n) или у постфиксном облику (n++ и n--).
Разлика између ова два облика је у томе што, на пример, ++n увећава променљиву n пре него што се њена вредност користи, а n++ увећава n након што се њена вредност користи. Тако се x = ++n; разликује од x = n++; што ћемо показати на следећем примеру.
Пример 2. Израчунати вредност променљивих након извршавања следећих наредби:
а)
//Deklarisanje promenljivih
int n, x;
//Promenljivoj n dodeljujemo vrednost 3
n = 3;
//Promenljivoj x dodeljujemo vrednost izraza ++n-2
x = ++n - 2;
б)
//Deklarisanje promenljivih
int n, x;
//Promenljivoj n dodeljujemo vrednost 3
n = 3;
//Promenljivoj x dodeljujemo vrednost izraza n++ - 2
x = n++ - 2;
а) Овде имамо префиксно коришћење оператора инкрементирања, тако да се у наредби x = ++n - 2; прво увећа променљива n на 4, а затим израчуна вредност израза (x=4-2) и променљива x добије вредност 2. Резултат је n=4, x=2.
б) Овде имамо постфиксно коришћење оператора инкрементирања, тако да се у наредби x = n++ - 2; прво користи вредност променљиве n, па је вредност променљиве x=3-2, дакле x=1, а затим увећа вредност променљиве n на 4.Резултат је n=4, x=1.
Приоритет аритметичких оператора:
Унарни оператори +, -, ++, -- су највишег приоритета.
Оператори *, / и % су вишег приоритета од оператора + и -.
Сви бинарни аритметички оператори су лево асоцијативни, а унарни су десно асоцијативни.
Редослед рачунања вредности аритметичких израза одређен је:
• употребом заграда
• приоритетом извршавања аритметичких операција
• положајем оператора унутар израза
• у изразу се рачунају прво подизрази у заградама
Пример 4. Израчунати вредност променљивих x и y након извршавања следећег дела кода:
//Deklarisanje promenljivih
int x, y;
int a = 0;
int b = 0;
//Uvecavanje vrednosti promenljive a za 1
a++;
//Uvecavanje vrednosti promenljive b za 1
++b;
//Promenljivoj x se dodeljuje vrednost promenljive a uvecana za 1
x = ++a;
//Promenljivoj x se dodeljuje vrednost promenljive b koja se zatim uveca za 1
y = b++;
Из a++; следи да се вредност променљиве а увећа за 1, тј. а=1.
Из ++b; следи да се вредност променљиве b увећа за 1, тј. b=1.
Из x = ++a; следи да префиксни оператор ++ увећава променљиву а, па затим користи њену вредност, односно променљива x
добија вредност једнаку увећаној вредности променљиве а. Дакле, a = 2, x = 2.
Из y = b++; следи да прво променљива y добије вредност променљиве b = 1, па је и y = 1, а затим постфиксни оператор ++ увећа вредност променљиве b за 1. Дакле, b = 2, y = 1.
Вредности променљивих после извршења наредби: x = 2, y = 1.