所以我编写了一个简单的 C 程序,它根据用户指定显示第 n 个斐波那契数。我开始使用整数,显然效果不太好,所以我开始使用 float 、多头,最后是多头。即使有很长的多头,也有一个截止点,我得到无意义或不正确的输出,例如负数(在 n = 100 之前开始发生)。我能做些什么来扩大这个程序的范围,还是没有办法解决这个问题?
#include <stdio.h>
#include <stdlib.h>
int main()
{
long long term = 0;
long long val = 0;
long long first = 0;
long long second = 1;
printf( "Which fibonacci term (starting at 0) would you like to see? ");
scanf("%lld", &term );
if( term == 0 )
{
printf("%lld\n", first );
return 1;
}
if( term == 1 )
{
printf( "%lld\n", second );
return 1;
}
if( term > 1 )
{
for( int i = 1; term > i; i++ )
{
val = first + second;
first = second;
second = val;
}
printf( "%lld\n", val );
return 1;
}
return 0;
}
最佳答案
根据 ISO C99,long long 至少为 64 位 - 具有最大尺寸的标准整数数据类型。您的编译器可能允许更大的类型,这些由 intmax_t
定义和 uintmax_t
在<stdint.h>
.
但是,我强烈建议使用 GMP 等 Bigint 库。 使用 GMP,长整数和 float 的唯一限制是系统上可用的资源。
关于c - C中的最大数字数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24091937/