ISO/IEC 9899:2011 条款6.5.7——按位移位操作符

6.5.7 按位移位操作符

 

语法

1、shift-expression:

        additive-expression

        shift-expression    <<    additive-expression

        shift-expression    >>    additive-expression

 

约束

2、每个操作数应该具有整数类型

语义

3、在每个操作数上执行整数晋升。结果类型是左操作数晋升后的类型。如果右操作数的值是负数或者大于等于晋升后的左操作数的宽度,那么行为是未定义的。

4、E1 << E2 的结果是E1左移E2比特位;留出来的比特用零填充。如果E1具有一个无符号类型,那么结果的值为E1 × 2E2,缩减到模比结果类型可表示的最大值加1。如果E1具有一个带符号类型以及非负的值,并且E1 ×2E2在结果类型中是可表示的,那么那即是结果类型;否则,行为是未定义的。

5、E1 >> E2 的结果是 E1 右移 E2比特位。如果E1具有一个无符号类型,或者E1具有一个带符号类型与一个非负值,那么结果的值是E1 / 2E2的商的整数部分。如果E1具有一个带符号的类型与一个负值,那么结果值是实现定义的。

posted @ 2015-10-03 18:16  zenny_chen  Views(247)  Comments(0Edit  收藏  举报