Не получается до конца правильно проанализировать код, который дал мне учитель
Учитель дал мне такой код:
#include <stdio.h>
unsigned int
pirma (unsigned int a, unsigned int b)
{
return a * b + b % 2;
}
unsigned int
antra (unsigned int a)
{
return a / 5 + (a << 1);
}
int
main ()
{
unsigned int a = 124;
unsigned int b = 292;
unsigned int c = 84;
a = antra (c);
b = pirma (a, b);
printf ("%d %d %d", a, b, c);
return 0;
}
Ответ в консоли выдает такой:
184 53728 84
Но если считать логически то получается:
272 79424 84
И методом проб я заметил что если в строке
a = antra (c);
(c) заменить на (a) то уже как раз получается так как если считать просто логически (читая код).
Скорее всего я просто что-то упускаю.
Так вот, не могли бы вы разложить по полочкам весь пример, почему в итоге получается:
184 53728 84
Ответы (1 шт):
Автор решения: timur
→ Ссылка
a = antra(c);
c / 5=16c << 1=168c / 5 + (c << 1)=184
В результате a = 184
b = pirma(a, b);
a * b=53 728b % 2=0a * b + b % 2=53 728
В результате b = 53 728