8 Expressions [expr]

8.8 Shift operators [expr.shift]

Операторы сдвига << и >> группировка слева направо.

shift-expression:
	additive-expression
	shift-expression << additive-expression
	shift-expression >> additive-expression

Операнды должны быть целочисленного типа или типа перечисления с незаданной областью, при этом выполняются интегральные рекламные акции. Тип результата - это тип продвинутого левого операнда. Поведение не определено, если правый операнд отрицательный, больше или равен длине в битах продвинутого левого операнда.

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

Значение E1 >> E2 является E1 правой сдвинутые E2 битовые позиции. Если E1 имеет тип без знака или если E1 имеет тип со знаком и неотрицательное значение, значение результата является неотъемлемой частью частного от E1/2E2. Если имеет тип со знаком и отрицательное значение, результирующее значение определяется реализацией. E1

Выражение E1 упорядочивается перед выражением E2.