Я хотел бы знать, обрабатывает ли Compile (или язык) различные переменные, например:
auto unsigned int a;
a = 8;
от
auto unsigned int a;
a = 1 << 3;
Точнее, здесь a = 8
в месте a
будет записано значение 8
, поэтому не важно, какое значение было (даже если есть мусор).
Я не уверен, как именно это работает в этой ситуации a = 1 << 3
.
Я уверен, что внутри a
есть значение мусора, и если, например, a == 1341
(значение мусора), то a = 1 << 3
приведет к 8
.
Но если 1341
в двоичном представлении означает:
00000101 00111101
тогда я ожидал быть 10728
:
00101001 11101000
.
Что я не совсем уверен, так это то, что a
рассматривается как 00000000
?
В этой форме a
инициализируется до 0
до выполнения операции слева?
Что-то вроде 00000000 = 1 << 3
?
Где a
становится 0000 1000
, или как на самом деле работает в этой ситуации?
Я понимаю, что unsigned int a = 0
, тогда a = a << 3
будет 8 = 0000 1000
, но это отличается от моего Вопроса, потому что здесь a <<
операции на a
, а не на 1
, как в моем Вопрос.