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

C90中如何声明long long int数组?编译报错解决方案咨询

在C90环境下使用64位整数数组的解决方案

你遇到的问题本质是C90标准并没有定义long long int类型——这个64位整数类型是C99才正式加入标准的,所以严格遵循C90的编译器会直接报错。下面给你两种可行的解决思路,以及修正你代码里的其他小问题:

方案1:利用编译器的扩展支持(最简单)

很多主流编译器(比如GCC、Clang)在C90模式下其实支持long long作为非标准扩展,只是会抛出警告。你只需要在编译时添加对应的选项来允许这个扩展:

  • 对于GCC/Clang:编译命令加上-std=c90 -Wno-long-long
    • -std=c90指定遵循C90标准
    • -Wno-long-long关闭long long相关的警告

用这个方案的话,你只需要修正代码里的两个输入错误(scanf的参数需要传地址),修改后的代码如下:

#include<stdio.h>

int main() {
    int i, n, j, X;
    long long int N[60];
    N[0] = 0;
    N[1] = 1;
    for(i = 2; i < 61; i++) {
        N[i] = N[i-1] + N[i-2];
    }
    scanf("%d", &n); // 修正:添加&取地址
    for(j = 0; j < n; j++) {
        scanf("%d", &X); // 修正:添加&取地址
        printf("Fib(%d) = %lld\n", X, N[X]); // 建议加换行,输出更清晰
    }
    return 0;
}

方案2:严格遵循C90标准(无扩展)

如果你的环境必须严格符合C90,不能用任何编译器扩展,那需要自己模拟64位整数的实现,因为C90里最大的标准整数类型是long(通常是32位,部分系统可能是64位,但不保证)。

可以用结构体来拆分64位整数为高32位和低32位,然后手动实现加法逻辑:

#include<stdio.h>

// 模拟64位整数:高32位+低32位
typedef struct {
    unsigned int low;
    unsigned int high;
} Int64;

// 实现两个Int64的加法
Int64 add(Int64 a, Int64 b) {
    Int64 result;
    result.low = a.low + b.low;
    // 处理进位:如果low相加后溢出,high加1
    result.high = a.high + b.high + (result.low < a.low ? 1 : 0);
    return result;
}

// 打印Int64类型的数值
void printInt64(Int64 num) {
    if(num.high != 0) {
        printf("%u%08u", num.high, num.low);
    } else {
        printf("%u", num.low);
    }
}

int main() {
    int i, n, j, X;
    Int64 N[60];
    // 初始化Fib(0)和Fib(1)
    N[0].low = 0; N[0].high = 0;
    N[1].low = 1; N[1].high = 0;
    
    for(i = 2; i < 61; i++) {
        N[i] = add(N[i-1], N[i-2]);
    }
    
    scanf("%d", &n);
    for(j = 0; j < n; j++) {
        scanf("%d", &X);
        printf("Fib(%d) = ", X);
        printInt64(N[X]);
        printf("\n");
    }
    return 0;
}

这个方案完全符合C90标准,不需要依赖任何扩展,能在严格的C90编译器上编译通过。

最后提醒一下:你的原始代码里scanf("%d", n);和scanf("%d", X);是错误的,scanf需要传入变量的地址(用&运算符),不管用哪种方案都必须修正这个问题,否则会导致运行时崩溃或者错误的输入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:36:35