将1左移31位等于多少(1<<31)

来源:互联网 发布:用c语言编写abs函数 编辑:程序博客网 时间:2024/05/16 00:38

将1左移31位等于多少(1<<31),理想中的答案应该是:


而打印a得到的结果却为:18446744071562067968

unsigned long long a = 1<<32

unsigned long long a = 1<<33

unsigned long long a = 1<<33

          ….

打印结果全为0。

由于编译器将1默认为int类型,将1左移31位时超过了int最长位数,编译器给出一个默认值。想要得到理想中的值需将1强制转换成unsigned long long类型。

0 0
原创粉丝点击