Оператори сложене доделе

Општи облик доделе вредности помоћу оператора сложене доделе (енгл. compound assignment operator) може се записати као…

promenljiva operator= izraz

…где operator може бити један од аритметичких оператора +, -, *, /, %, или један од битских оператора &, ^, |, <<, >>. Деловање оператора сложене доделе може се представити на следећи начин:

promenljiva = promenljiva operator izraz

Напиши програм у програмском језику C који ће на стандардни излаз исписати Тамарину оцену са другог теста из програмирања, ако је оцена на првом тесту била \(2\), а на другом дупло већа.

Задатак можеш решити коришћењем оператора доделе = и аритметичког оператора * на следећи начин:

#include <stdio.h>

int main(void)
{
    int ana = 2;
    ana = ana * 2;
    printf("%d", ana);
    return 0;
}

што ће на стандардном излазу резултирати исписом:

4

Такође, наредбу ana = ana * 2; можеш записати коришћењем сложеног оператора доделе на следећи начин…

#include <stdio.h>

int main(void)
{
    int ana = 2;
    ana *= 2;
    printf("%d", ana);
    return 0;
}

..што ће на стандардном излазу резултирати истим исписом:

4

Значи, наредба x *= 2; је у програмском језику C еквивалентна наредби x = x * 2;. Суштински, обе наредбе производе исти резултат и потпуно је све једно коју ћеш користити. Међутим, C програмери воле да запишу свој програмски кôд што сажетије и велика је вероватноћа да ћеш често наилазити на запис наредби као у другом решењу задатка.

Напиши програм у програмском језику C који ће на стандардни излаз исписати редом декадне вредности бинарних бројева 00000001, 00000010, 00000100 и 00001000. У односу на први број \(1\), сваки следећи број добијен је померањем јединице за једно место у лево, а очекиване вредности на излазу требају бити \(1\), \(2\), \(4\) и \(8\).

#include <stdio.h>

int main(void)
{
    int broj = 1;
    printf("%d", broj);
    broj <<= 1;
    printf(" %d", broj);
    broj <<= 1;
    printf(" %d", broj);
    broj <<= 1;
    printf(" %d", broj);
    return 0;
}

што ће на стандарном излазу резултирати исписом:

1 2 4 8

Сложена додела је често пожељна због сажетости и ефикасности записа. Може бити посебно корисна када радиш са сложенијим изразима или када ажурираш вредности променљивих у једној наредби, као у претходном примеру. Избор између једноставне и сложене доделе је ствар стила програмера и читљивости решења задатка.