Аритметички оператори¶
Аритметички оператори извршавају стандардне аритметичке операције над операндима и могу се поделити на унарне…
унарно плус
+
иунарно минус
-
…и бинарне:
сабирање
+
,одузимање
-
,множење
*
,дељење
/
имодул тј. остатак приликом целобројног дељења
%
.
Унарни аритметички оператори¶
Унарне аритметичке операторе +
и -
можеш посматрати као операторе за рад са
знаком операнда. Унарни минус испред операнда резултује промену знака операнда,
стим да је негативна вредност нуле и даље нула. Унарни плус испред операнда не
мења знак операнда, већ само потврђује знак и ретко се може пронаћи образложење
за потребом његовог коришћења. Након извршења унарног оператора над операндом,
операнд остаје истог типа. У следећем примеру…
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
Приоритет аритметичких оператора¶
Приоритет аритметичких оператора је усклађен са њиховим приоритетом у
математици, па је приоритет оператора *
, /
и %
виши од приоритета +
и
-
, где сви имају леву асоцијативност. Приоритет и асоцијативност се могу
променити навођењем заграда.