简单问题(一个警告错误),可马上给分

下面的小程序,编译时有一个警告错误:
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]
# 1
第2个if 如果条件为假则没有返回值
所以。。。/
tlping-看不见 at 2007-10-26 > top of Msdn China Tech,C/C++,C语言...
# 2
楼上说得对
zeroweb at 2007-10-26 > top of Msdn China Tech,C/C++,C语言...
# 3
可以在第2个if的return 语句后再加一个else语句并给条件为假时的返回结果
tlping-看不见 at 2007-10-26 > top of Msdn China Tech,C/C++,C语言...
# 4
fun函数定义要加入return 0;
maomaoxt-小客侠 at 2007-10-26 > top of Msdn China Tech,C/C++,C语言...
# 5
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为任意值。
}
liushmh-想开书店: at 2007-10-26 > top of Msdn China Tech,C/C++,C语言...
# 6
if 为假时,就继续循环,怎么会有问题呢?
cglee at 2007-10-26 > top of Msdn China Tech,C/C++,C语言...
# 7
不是每条语路都有返回直,如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 *//*是任意直,它代表异常
}
bonoji at 2007-10-26 > top of Msdn China Tech,C/C++,C语言...
# 8
并不是所有的分支,其返回都有值
liubear at 2007-10-26 > top of Msdn China Tech,C/C++,C语言...
# 9
还有if (t<num[i]) return num[i];不是错误的根本原因,如你加了
return *//*是任意直,它代表异常,它有没有ELSE都一样,你的函数设为INT型,你就要确定任何时候都要有个INT型可返回.
bonoji at 2007-10-26 > top of Msdn China Tech,C/C++,C语言...
# 10
修改如下:
#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);
}

编译一定能通过!
记得给分哦!!
bobob-静思 at 2007-10-26 > top of Msdn China Tech,C/C++,C语言...
# 11
你的fun函数定义的返回值,但是你没有写必要的返回值语句,你的那个return只有条件成立时才可以,条件不成立时,你没处理,在fun 的最后一行加上return -1;
# 12
to:bonoji
我的疑问
他本人的意思在这里是要返回一个它需要的值,d但是return *是不能达到这个要求的
tlping-看不见 at 2007-10-26 > top of Msdn China Tech,C/C++,C语言...