Аритметички оператори

Аритметички оператори извршавају стандардне аритметичке операције над операндима и могу се поделити на унарне

  • унарно плус + и

  • унарно минус -

…и бинарне:

  • сабирање +,

  • одузимање -,

  • множење *,

  • дељење / и

  • модул тј. остатак приликом целобројног дељења %.

Унарни аритметички оператори

Унарне аритметичке операторе + и - можеш посматрати као операторе за рад са знаком операнда. Унарни минус испред операнда резултује промену знака операнда, стим да је негативна вредност нуле и даље нула. Унарни плус испред операнда не мења знак операнда, већ само потврђује знак и ретко се може пронаћи образложење за потребом његовог коришћења. Након извршења унарног оператора над операндом, операнд остаје истог типа. У следећем примеру…

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

Приоритет аритметичких оператора

Приоритет аритметичких оператора је усклађен са њиховим приоритетом у математици, па је приоритет оператора *, / и % виши од приоритета + и -, где сви имају леву асоцијативност. Приоритет и асоцијативност се могу променити навођењем заграда.