Определяет ли сдвиг отрицательных целых чисел влево и вправо?

Я знаю, сдвиг вправо отрицательного знакового типа зависит от реализации, но что, если я выполню сдвиг влево? Например:

int i = -1;
i << 1;

Это четко определено?

Я думаю, что стандарт не говорит об отрицательном значении со знаком

, если E1 имеет знаковый тип и неотрицательное значение, а E1 × 2 E2 - это может быть представлен в типе результата, тогда это будет результирующее значение; в противном случае поведение не определено.

Это только поясняет, что если результат не может быть представлен в подписанном типе, то поведение не определено.

17
задан Pascal Cuoq 17 April 2015 в 14:09
поделиться