У меня проблема с домашней работой, на которую я знаю ответ, но не понимаю, почему это ответ вообще, и просто надеялся найти кого-то, кто может объяснить это мне.Арифметическое объяснение битового сдвига (C)
#include <stdio.h>
int main(void){
int a = 0, b = 1, c;
c = a << b + b << a;
printf("d%\n",c);
return 0;
}
Таким образом, ответ выходит так, что C = '0'. Я думал, что 'a < < b' будет эквивалентен 0, 'b < < a' выйдет до 1, и поэтому 'c = 0 + 1'. Почему это неправильно?
И все же, когда я пытаюсь:
c = b << a + a << b
C равен '2'. Что делает меня еще менее понятным. Я был бы так благодарен, если бы кто-нибудь мог объяснить мне, почему это работает так, или указать мне на какую-то ссылку, которая разъясняет мне это поведение.
Это имеет смысл, спасибо! – M4v