Когда я пишу следующую программу и использую компилятор GNU С++, вывод 1
, который, по моему мнению, обусловлен операцией вращения, выполняемой компилятором.
#include <iostream>
int main()
{
int a = 1;
std::cout << (a << 32) << std::endl;
return 0;
}
Но логически, поскольку он сказал, что бит теряется, если они переполняют ширину бита, вывод должен быть 0. Что происходит?
Код находится на ideone, http://ideone.com/VPTwj.