В следующем выражении результат операции сдвига влево присваивается переменной i
.
int i;
i = 7 << 32;
printf("i = %d\n",i);
В следующем выражении операция присваивания левого сдвига переносится.
int x = 7;
x <<= 32;
printf("x = %d\n",x);
Оба приведенных выше выражения дали разные результаты. Но это не то же самое со следующими двумя выражениями. Оба они дали тот же результат. Итак, что может быть причиной того, что приведенные выше выражения возвращают разные значения?
int a;
a = 1 + 1;
printf("a = %d\n",a);
int b = 1;
b += 1;
printf("b = %d\n",b);