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
相关产品推荐
相关产品推荐

