Это 32-разрядная версия Windows 7, Visual Studio 2017, в файле C.
int i = 65536;
Как и ожидалось,
i >> 0 = 65536
i >> 1 = 32768
:
:
i >> 16 = 1
i >> 17 to 31 = 0.
i >> 32 снова магически 65536, хотя,Насколько это законно?
ИСО / МЭК 9899: TC2 говорит следующее, и я предполагаю, что спецификации C ++ совпадают?
Результат E1 >> E2 смещен вправо на E1Е2 битовые позиции. Если E1 имеет тип без знака или E1 имеет тип со знаком и неотрицательное значение, значение результата является неотъемлемой частью отношения E1 / 2 ^ E2. Если E1 имеет тип со знаком иотрицательное значение, результирующее значение определяется реализацией.