我做了一个程序,可以找到一个数字的阶乘。但是对于整数数据类型,答案最多为12,对于float,它是13.但是整数和浮点数的大小都是32.为什么我看到不同的答案?
#include<stdio.h>
int main()
{
int n,i=1,fact=1;
scanf("%d",&n);
while(i<=n)
{
fact=fact*i;
i=i+1;
}
printf("fact is %d\n",fact);
return 0;
}
答案 0 :(得分:0)
他们是两个完全不同的数字表示。没有理由期望它们是相同的。他们给出了不同的答案,因为他们完全不同。
阿拉伯数字最多可以计入999个,有三个位置。罗马数字不能算过去三。为什么不同?好吧,因为两个数字系统是完全不同的表示数字的方式,并以完全不同的方式使用相同数量的空间。
答案 1 :(得分:0)
我认为问题在于,当你使用浮点数时,你没有改变scanf,因此试图将整数表示读入浮点变量,因为它们的大小与它适合的大小相同但正如David正确指出的那样他们以完全不同的方式使用32位。
如果您正确地将值读入Float,答案将是相同的。
您还需要更改printf。