You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中输出数字的限制是什么?斐波那契数列计算异常解析

问题根源:int类型的整数溢出限制

你遇到的异常是整数溢出导致的——C语言里的int类型有固定取值范围,通常是 -2147483648 到 2147483647(取决于编译器和系统,一般为32位有符号整数)。

斐波那契数列增长速度极快:第30项是832040,还在int范围内;但第46项会达到1836311903,接近int的上限;第47项为2971215073,直接超出int最大值。这时候int变量存不下这个数,就会发生溢出——溢出后的数值会按补码规则循环,变成负数或无意义的乱码,也就是你看到的异常输出。

你的代码里n和a都是int类型,自然会碰到这个问题。

解决办法

  1. 改用更大范围的整数类型:比如long long(64位有符号整数),取值范围是 -9223372036854775808 到 9223372036854775807,能支撑到斐波那契第90项左右。修改后的代码示例:
#include <stdio.h>

int main() {
    
    int fibo, i;
    long long n, a;
    
    printf("Enter a number: ");
    scanf("%d", &fibo);
    
    n = 1; a = 1;
    
    printf("%lld %lld ", n, a);
    
    for(i = 3; i <= fibo; i++){
        n += a;
        a = n - a;
        printf("%lld ", n);
    }
    return 0;
}

注意输出long long时要使用格式符%lld。

  1. 如果需要计算更多项:可以用unsigned long long(无符号64位整数,上限更大),或者自己实现大整数运算(用数组存储每一位数字,手动处理进位)。

内容的提问来源于stack exchange,提问作者Brezendelima

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 10:15:25