Loi*_*oic 2 c bit-shift implicit-conversion
gcc 4.8.4警告1u << 63ul?(假设64位long和32位int)并计算0.这是正确的(没有晋升1u到1ul转移之前)?
ISO/IEC 9899:201x,6.3.1.8(通常的算术转换):"许多期望算术类型的操作数引起转换的运算符"; 6.5.7(按位移位运算符):"对每个操作数执行整数提升......".
但我无法得出结论.哪些是"很多运营商"?据我所知,"整数提升"不属于宽泛的类型int(我是否正确?),但标准没有明确声明对于隐式类型转换不考虑按位移位的右操作数.
每个操作都单独记录.例如,n1548§6.5.5"乘法运算符"3
通常的算术转换是在操作数上执行的.
§6.5.7"按位移位运算符"中省略了该短语.相反它说:
对每个操作数执行整数提升.结果的类型是提升的左操作数的类型....
由于按位移位运算符部分对"通常的算术转换"没有任何说明,因此不会发生转换.
| 归档时间: |
|
| 查看次数: |
423 次 |
| 最近记录: |