Аритметички оператори¶
Аритметички оператори извршавају стандардне аритметичке операције над операндима и могу се поделити на унарне…
унарно плус
+иунарно минус
-
…и бинарне:
сабирање
+,одузимање
-,множење
*,дељење
/имодул тј. остатак приликом целобројног дељења
%.
Унарни аритметички оператори¶
Унарне аритметичке операторе + и - можеш посматрати као операторе за рад са
знаком операнда. Унарни минус испред операнда резултује промену знака операнда,
стим да је негативна вредност нуле и даље нула. Унарни плус испред операнда не
мења знак операнда, већ само потврђује знак и ретко се може пронаћи образложење
за потребом његовог коришћења. Након извршења унарног оператора над операндом,
операнд остаје истог типа. У следећем примеру…
int x = 2;
x = -x;
…у првој линији, променљива x иницијализује се са вредношћу \(2\). У другој
линији, прво се израчунава израз на десној страни (мења се знак променљивој
x), па се резултат \(-2\) додељује променљивој x на левој страни. У следећем
примеру…
double y = 2.0;
y = +y;
…у првој линији, променљива y иницијализује се са вредношћу \(2.0\). У другој
линији, израз y = +y; је синтаксно тачан, али нема много смисла јер никако не
утиче на вредност променљиве - само је потврђује.
Бинарни аритметички оператори¶
Бинарне аритметичке операторе можеш посматрати кроз рад са два операнда:
levi_operand aritmeticki_operator desni_operand;
где леви и десни операнди могу бити појединачни операнди или аритметички
изрази. Оператори + и - су приоритета 4, а оператори *, / и %
приоритета 3 и сви имају леву асоцијативност. Бинарни аритметички оператори
врше операције над операндима слично као и у математици, стим да у програмском
језику C, важе неке специфичности које се тичу типова података и приоритета
извршавања оператора. Пре него што почнеш да пишеш програме користећи
аритметичке операторе, изузетно је важно да се упознаш са овим специфичностима.
У овој лекцији научићеш како функционишу аритметички оператори над операндима истог типа, а у следећој како функционишу над операндима различитих типова.
Аритметички оператори и целобројни операнди¶
Како функционишу бинарни аритметички оператори над целобројним операндима научио си још у нижим разредима основне школе.
Основна аритметичка операција је сабирање. Збир бројева \(7\) и \(2\) у
математици би записао као \(7+2\). У програмском језику C користићеш исти запис
7 + 2. Исто важи и за променљиве. Еквивалентан запис математичког израза
\(x+y\) у програмском језику C је x + y.
Напиши програм у програмском језику C који ће променљивој z доделити збир
вредности променљивих x и y, па након тога исписати вредност променљиве z
на стандардни излаз, ако су променљиве иницијализове и декларисане овако:
int x = 7, y = 2, z;.
#include <stdio.h>
int main(void)
{
int x = 7, y = 2, z;
z = x + y;
printf("%d", z);
return 0;
}
Извршавањем овог програма на стандардном излазу исписаће се:
9
Поред сабирања, једна од основних аритметичких операција је одузимање.
Разлика бројева \(7\) и \(2\) у математици се записује као \(7-2\), исто као и у
програмском језику C 7 - 2. Такође, еквивалентан запис математичког израза
\(x-y\) у програмском језику C је x - y.
Напиши програм у програмском језику C који ће променљивој z доделити разлику
вредности променљивих x и y, па након тога исписати вредност променљиве z
на стандардни излаз, ако су променљиве иницијализоване и декларисане као у
претходном примеру.
#include <stdio.h>
int main(void)
{
int x = 7, y = 2, z;
z = x - y;
printf("%d", z);
return 0;
}
На стандардном излазу исписаће се:
5
Још једна од основних аритметичких операција је множење. Множење бројева
\(7\) и \(2\) у математици се записује као \(7⋅2\), док се у програмском језику C
множење означава оператором *, па се множење бројева 7 и 2 записује као
7 * 2. У математици се производ две променљиве може записати као \(x⋅y\) или
као \(xy\). У програмском језику C оператор * се не може изоставити, па се
производ две променљиве записује као x * y.
Напиши програм у програмском језику C који ће променљивој z доделити вредност
производа променљивих x и y, па након тога исписати вредност променљиве z
на стандардни излаз, ако су променљиве иницијализоване и декларисане као у
претходном примеру.
#include <stdio.h>
int main(void)
{
int x = 7, y = 2, z;
z = x * y;
printf("%d", z);
return 0;
}
На стандардном излазу исписаће се:
14
Последња од основних аритметичких операција је дељење. Дељење бројева \(7\)
и \(2\) у математици се записује као \(7:2\) или као \(\frac{7}{2}\). У програмском
језику C дељење се означава оператором /, па се дељење бројева 7 и 2
записује као 7 / 2. Приликом дељења два цела броја оператором /, као
резултат добија се само цео део броја, док се разломљени део одбацује - врши се
целобројно дељење. Остатак приликом целобројног дељења израчунава се дељењем по
модулу, означава оператором % и записује као 7 % 2. Исто важи и за
променљиве. Предзнак резултата целобројног дељења биће једнак предзнаку првог
операнда.
Напиши програм у програмском језику C који ће променљивој z доделити резултат
целобројног дељења променљивих x и y, па након тога исписати ту вредност на
стандардни излаз, ако су променљиве иницијализоване и декларисане као у
претходном примеру.
#include <stdio.h>
int main(void)
{
int x = 7, y = 2, z;
z = x / y;
printf("%d", z);
return 0;
}
На стандардном излазу исписаће се…
3
…а остатак 1 се занемарује.
Напиши програм у програмском језику C који ће променљивој z доделити остатак
приликом целобројног дељења променљивих x и y, па га након тога исписати на
стандардни излаз, ако су променљиве иницијализове и декларисане као у
претходном примеру.
#include <stdio.h>
int main(void)
{
int x = 7, y = 2, z;
z = x % y;
printf("%d", z);
return 0;
}
На стандардном излазу исписаће се:
1
Аритметички оператори и реални операнди¶
Примена аритметичких оператора над операндима реалног типа не разликује се
много у односу на примену над операндима целобројног типа, осим у дељењу.
Приликом дељења два реална броја оператором /, резултат ће бити реалан број,
наравно без остатка, што значи да оператор % није применљив над операндима
реалног типа.
Напиши програм у програмском језику C који ће редом извршити операције
сабирања, одузимања, множења и дељења над операндима x и y, па након тога,
резултате тих операција, заокружене на две децимале, исписати у једној линији
стандардног излаза, ако су иницијализоване и декларисане следеће реалне
променљиве double x = 7.0, y = 2.0, zbir, razlika, proizvod, kolicnik;.
#include <stdio.h>
int main(void)
{
double x = 7.0, y = 2.0, zbir, razlika, proizvod, kolicnik;
zbir = x + y;
razlika = x - y;
proizvod = x * y;
kolicnik = x / y;
printf("%.2lf %.2lf %.2lf %.2lf", zbir, razlika, proizvod, kolicnik);
return 0;
}
На стандардном излазу исписаће се редом резултати операција сабирања,
одузимања, множења и дељења над операндима x и y заокружени на две
децимале:
9.00 5.00 14.00 3.50
Приоритет аритметичких оператора¶
Приоритет аритметичких оператора је усклађен са њиховим приоритетом у
математици, па је приоритет оператора *, / и % виши од приоритета + и
-, где сви имају леву асоцијативност. Приоритет и асоцијативност се могу
променити навођењем заграда.