Я знаю, сдвиг вправо отрицательного знакового типа зависит от реализации, но что, если я выполню сдвиг влево? Например:
int i = -1;
i << 1;
Это четко определено?
Я думаю, что стандарт не говорит об отрицательном значении со знаком
, если E1 имеет знаковый тип и неотрицательное значение, а E1 × 2 E2 - это может быть представлен в типе результата, тогда это будет результирующее значение; в противном случае поведение не определено.
Это только поясняет, что если результат не может быть представлен в подписанном типе, то поведение не определено.