Что стандарт 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) или это неуточненное поведение?

Ответы на вопрос(1)

Ваш ответ на вопрос