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

C代码报ISO C++ forbids comparison between pointer and integer错误求助

问题原因及修复方案

报错直接触发点

你遇到的ISO C++ forbids comparison between pointer and integer [-fpermissive]报错,来源于代码中for (i = 0; i<n; ++i)这一行。

代码存在的所有问题

  • 变量类型/命名冲突:你定义了int n[SIZE];,这里的n是int数组名,本质是指针类型,for循环中拿整数类型的变量i和指针n直接比较,不符合C++语法要求,直接触发本次报错。
  • 变量定义与使用不匹配:你声明的double list;是单个double类型变量,后续代码sum += list [i];将其作为数组取下标访问,属于语法错误,会触发额外的编译错误或运行时越界崩溃。
  • main函数返回值不符合要求:C++标准要求main函数返回int类型的状态码,你返回double类型的sum不符合规范。
  • 无效函数声明:你声明了double get_average(const double list[], int n);函数,但既没有实现该函数,也没有调用该函数,属于冗余无效代码。

修复后示例代码(实现求SIZE个double元素的平均值功能)

#include <stdio.h>
#define SIZE 10

// 实现求平均值的函数
double get_average(const double list[], int n) {
    int i;
    double sum = 0;
    for (i = 0; i < n; ++i) {
        sum += list[i];
    }
    return sum / n;
}

int main(void){
    // 定义存储元素的double数组,这里给示例初始值
    double list[SIZE] = {1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 10.0};
    double avg = get_average(list, SIZE);
    printf("平均值为:%.2lf", avg);
    // main函数正常退出返回0
    return 0;
}

内容的提问来源于stack exchange,提问作者09-15-00

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:54:02