0

我偶然发现了以下问题,有人可以帮忙吗?我正在尝试使用按位运算,我希望这能打印出 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;
}
4

1 回答 1

4

您必须将常量设为 unsigned long long 类型,以保证至少 64 位大小:

uint64_t x=(1LLU<<50);
于 2014-10-31T22:31:35.510 回答