简单问题(一个警告错误),可马上给分
下面的小程序,编译时有一个警告错误:
warning C4715: 'fun' : not all control paths return a value
请帮忙看看,怎么修改?
#include <stdio.h>
int fun(int t, int num[10])
{
int i;
if(t>=num[9]) return 100;
else {
for(i=0;i<10;i++)
if (t<num[i]) return num[i];
}
}
void main()
{
int num[10]={2,5,8,13,17,22,35,67,86,95};
int t,v;
scanf("%d", &t);
v=fun(t,num);
printf("%d\n", v);
}
[513 byte] By [
cglee] at [2007-12-16]
int fun(int t, int num[10])
{
int i;
if(t>=num[9]) return 100;
else {
for(i=0;i<10;i++)
if (t<num[i]) return num[i];
}
return value;//value为任意值。
}
不是每条语路都有返回直,如IF和ELSE都没执行,返回什么?
你也许说不是IF就是ELSE,没别的可能,可编译器不知道啊,所以这样:
int fun(int t, int num[10])
{
int i;
if(t>=num[9]) return 100;
else {
for(i=0;i<10;i++)
if (t<num[i]) return num[i];
}
return *//*是任意直,它代表异常
}
还有if (t<num[i]) return num[i];不是错误的根本原因,如你加了
return *//*是任意直,它代表异常,它有没有ELSE都一样,你的函数设为INT型,你就要确定任何时候都要有个INT型可返回.
修改如下:
#include <stdio.h>
int fun(int t, int num[10])
{ int i;
if(t>=num[9])
return 100;
else
{
for(i=0;i<10;i++)
{
if(t<num[i])
return num[i];
else return null;//加上这一句,null为返回值
}
}
}
void main()
{
int num[10]={2,5,8,13,17,22,35,67,86,95};
int t,v;
scanf("%d", &t);
v=fun(t,num);
printf("%d\n", v);
}
编译一定能通过!
记得给分哦!!