Почему этот код печатает два разных номера для f1
и f2
:?сдвиг Работа в C++
int main() {
int a = 32;
int f1 = (0xffffffff << a);
int f2 = (0xffffffff << 32);
std::cout << f1 << std::endl; // print -1
std::cout << f2 << std::endl; // print 0
}
Для f2, я получаю это предупреждение, но ничего для f1:
предупреждение: левый отсчет сдвига > = ширина типа
Я использую г ++ 4.4.7
http://stackoverflow.com/questions/18918256/is-right-shift-undefined-behavior-if-the-count-is-larger-than-the-width-of-the-t/18918340#18918340 – ewcz