Четох някъде, че побитовото изместване автоматично превръща операнда в int. Но не съм сигурен дали това изявление трябва да бъде квалифицирано с "ако операндите са от неравен тип."
char one = 1, bitsInType = 8;
one << (bitsInType - one);
Резултатът по подразбиране на втория ред води ли до int или char?