将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类型。