我偶然发现了以下问题,有人可以帮忙吗? 我正在尝试使用按位运算,我希望这会打印2 ^ 50的值。然而,输出是0.我可以打印的最大值是2 ^ 31,这应该是普通int的最大值,对吧?我在这做一些非常错误的事情吗?提前谢谢。
#include<stdio.h> #include<inttypes.h> int main(void) { uint64_t x=(1<<50); printf("%"PRIu64,x); return 0; }
答案 0 :(得分:4)
你必须使你的常量为无符号长long类型,它保证至少64位大小:
uint64_t x=(1LLU<<50);