C语言 8*8象棋格米粒问题编程位数问题
发布网友
发布时间:2023-12-28 04:01
我来回答
共1个回答
热心网友
时间:2024-08-20 03:53
/*
你的运算结果最大是: 1 + 2 + 4 + 8 + ... + 2^63 = 2^63 - 2
int 只有 32 位,最大的数字是 2^31-1 ,因此结果会溢出。
正确的方法是用 __int64 ,它的最大数字是 2^63-1,符合要求
*/
#include<stdio.h>
int main()
{
__int64 S=0;
int i,A;
__int64 t=1;
printf("请输入一个小于64的数: \n");
scanf("%d",&A);
for(i=2;i<=A+1;i++)
{
S=S+t;
t=t*2;
printf(" %d 及之前的格子一共 %I64d个米粒\n",i-1,S);
}
return 0;
}