c – 为什么`1 << 32`和`int i = 32; 1 <&l
代码如下所示.我在VS,clang和G上测试过它.所有这些都表明1 <<< 32和1<<我(我32岁)是不同的.我看了一下组装.看起来编译器计算1<<<< 32在编译.我认为这种不一致应该是一个错误,或者它只是C的另一个未定义的行为.
#include <iostream> int main(int argc,char *argv[]) { std::cout << (1 << 32) << std::endl; int i = 32; std::cout << (1 << i) << std::endl; return 0; } 结果: clang++: 1 << 32:73832 1 << i:1 g++: 1 << 32:73832 1 << i:1 解决方法
C标准说
然后
在这种情况下,你不应该期待任何好处. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |