#include<stdio.h>
void main()
{
int nMax,count;
printf("Enter the integer number:");
scanf("%d",&nMax);
int n,j;
for(n=0;n<=nMax;n++)
{
count=1;
for(j=1;j<=n;j++)
{
count*=j;
}
printf("%d!=%d\n",n,count);
}
}
这个程序里输入的大一点的数字例如20时就会有溢出的现象,试着把数据类型换为更大的long整形但是还是溢出,求解释。
需要准备的材料分别有:电脑、C语言编译器。
1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp,输入问题基础代码。
2、在test.cpp文件中,将int全部调整为long long,printf函数调整为:printf("%lld!=%lld\n",n,count);。
3、编译器运行test.cpp文件,此时成功打印出了大数。
温馨提示:答案为网友推荐,仅供参考
第1个回答 推荐于2017-10-13
因int 类型的变量的大小只有四个字节,20的阶乘太大了 所以溢出,把count改成 long long型就可以了。
#include<stdio.h>
void main()
{
int nMax;
long long count;
printf("Enter the integer number:");
scanf("%d",&nMax);
int n,j;
for(n=0;n<=nMax;n++)
{
count=1;
for(j=1;j<=n;j++)
{
count*=j;
}
printf("%d!=%lld\n",n,count);
}
}追问
#include<stdio.h>
void main()
{
int nMax;
long long count;
printf("Enter the integer number:");
scanf("%d",&nMax);
int n,j;
for(n=0;n<=nMax;n++)
{
count=1;
for(j=1;j<=n;j++)
{
count*=j;
}
printf("%d!=%lld\n",n,count);
}
}追问
为什么要long long 一个long不行嘛?
追答long 就是 long int , 也是四个字节,和int 一样 long long 是8个字节的
本回答被提问者采纳第2个回答 2013-04-02
1:注意各种数据类型的数值范围:比如int型0-65535等;
2:注意不要造成死循环:如:
main()
{
while(1) /*永远循环下去*/
printf("\n");
}
2:注意不要造成死循环:如:
main()
{
while(1) /*永远循环下去*/
printf("\n");
}
第3个回答 2013-04-02
long 型和int 类型一样都是一个4个字节!!
第4个回答 2013-04-02
你是想求阶层。。。20阶层到int型不会溢出呀。。。32位。大的很