繁体   English   中英

C中无符号long long的按位运算

[英]Bitwise operations on unsigned long long in c

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

您必须将常量设置为无符号的long long类型,该类型保证至少64位的大小:

uint64_t x=(1LLU<<50);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM