【发布时间】:2017-03-29 12:52:30
【问题描述】:
当我在 .c 文件中运行此代码时,它可以工作,但是当我为它创建项目时,我调用的函数只会返回 0.00。为什么?为什么它在项目文件中不起作用?
我正在使用 DevC++。
#include<stdio.h>
float mean(int total, int max);
int main(){
int i,max, total=0;
int array[max];
printf("Enter max: ");
scanf("%d",&max);
for(i=0; i<max; i++){
scanf("%d",&array[i]);
total+=array[i];
}
printf("Total: %d\n",total);
printf("Mean: %.2f",mean(total,max));
return 0;
}
float mean(int total, int max){
float ave;
ave=(float)total/max;
return ave;
}
【问题讨论】:
-
你展示的代码甚至不应该build。请复制粘贴您拥有的实际代码。如果是这样,那么您需要先修复构建错误。
-
然后考虑一下:
max的值是什么在调用scanf对其进行初始化之前?array的大小是多少? -
最大值和数组没有问题。我的问题是当我调用 mean(total,max);输出应该是 ave,但它只显示 0.00,这就是为什么
-
哦,所以你喜欢生活在边缘并且有未定义的行为?因为那是你所拥有的!当您使用
max定义数组array时,max的值是indeterminate,您将有未定义的行为。在您的程序中存在未定义的行为意味着整个程序格式错误并且无效。该程序所做的任何事情都不能被信任。 -
@DavidBowling: "...声明 int array[0]." 不一定。
max还没有被赋值,所以使用max已经调用了臭名昭著的未定义行为。