问题是用C语言运行2 * 4 * 6* . .*100的结果
代码如下:
#include
int main()
{
int n,ji,a;
n=1;
ji=1;
a=2;
while(n<=50)
{
n=n+1;
ji=ji*a;
a=a+2;
}
printf("the result is %d \n",ji);
return 0;
}
但运行结果是0是怎么回事?自学不懂求解答
该回答引用ChatGPT
请参考下面的解决方案,如果可行还请 点击 采纳,感谢!
代码中, ji 的数据类型是 int 类型,int 类型数据的存储范围有限,当 ji 超出 int 类型的存储范围后,会导致 ji 存储了一个不正确的值。
要解决这个问题,可以使用长整数数据类型,如 long long 或者 double 等
#include<stdio.h>
#include<limits.h>
int main()
{
int n = 1;
unsigned long long ji = 1;
int a = 2;
while(n <= 50)
{
n = n + 1;
ji = ji * a;
if (ji > ULLONG_MAX / (a + 2)) {
break;
}
a = a + 2;
}
printf("the result is %llu \n", ji);
return 0;
}
超过int范围了