Что стандарт C говорит о сдвиге битов больше, чем ширина типа?
Рассмотрим следующий код:
int i = 3 << 65;
Я ожидаю, что результатi==0
Однако фактический результатi==6
, После некоторого тестирования я обнаружил это с помощью следующего кода:
int i, s;
int a = i << s;
int b = i << (s & 31);
значенияa
а такжеb
всегда одинаковы.
Говорит ли стандарт C о сдвиге более 32 бит (ширина типаint
) или это неуточненное поведение?