При компиляции Visual Studio следующего кода C результат равен 4 .
void main() { int c = 1; c = c<<34;}
Код сборки, как видно из окна дизассемблирования Visual Studio,
shl eax,22h
Из ассемблера легко увидеть, что мы сдвигаем 34. Поскольку целое число здесь равно 4 байтам, из результатов очевидно, что операция по модулю выполнялась на машинном уровне, чтобы это работало как сдвиг на 2.
Мне было интересно, стандартизировано ли это поведение для разных платформ или варьируется в зависимости от платформы?
void main() {...}
? - person wildplasser   schedule 20.04.2013