#include<stdio.h> int main() { long long i=2; long long n=1; while(n<=63) { printf("%lld\n",i); i=(i*2); n++; } return 0; }为啥我这个代码输出二的63次方的时候带个负号
时间: 2024-01-28 21:03:15 浏览: 38
c-getopt-long 使用手册
这是因为你使用的是 long long 类型,而 long long 类型的范围是 -2^63 到 2^63-1,当 i 的值达到 2^63 时,超出了 long long 类型的正数范围,因此会出现负数。如果想要避免这种情况,可以使用 unsigned long long 类型,它的范围是 0 到 2^64-1,可以表示更大的正整数。
阅读全文