Оператори сложене доделе¶
Општи облик доделе вредности помоћу оператора сложене доделе (енгл. 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
Сложена додела је често пожељна због сажетости и ефикасности записа. Може бити посебно корисна када радиш са сложенијим изразима или када ажурираш вредности променљивих у једној наредби, као у претходном примеру. Избор између једноставне и сложене доделе је ствар стила програмера и читљивости решења задатка.