Может кто-нибудь объяснить, почему следующий код выводит то, что он делает:
char c = -1;
cout << (c << 8) << endl;
cout << ((unsigned char) c << 8) << endl;
cout << (c << 24) << endl;
cout << ((unsigned char) c << 24) << endl;
Вывод:
-256
65280
-16777216
-16777216
Я думал, что приведение к беззнаковому символу просто изменит способ получения битовинтерпретированы.Тем не менее, он изменил результаты при смещении влево на 8. Что странно, это не похоже на случай смещения влево на 24.