不确定'控制可以达到非空白功能的结束'错误消息的意思

时间:2015-05-08 02:35:17

标签: c

尝试使用伪随机生成器执行搜索,以查找值是否在数组中。每次执行时我都会收到以下消息:

helpers.c:46:1: error: control may reach end of non-void function [-Werror,-Wreturn-type]

我做错了什么?

bool search (int value, int values[], int n)
{             
if (n > 0)
{     
    for (int i = 0; i < n; i++)
    {
        if (value == values[i])
            return true;
        else
            return false;                        
    }    

}
else
    return false;

}

2 个答案:

答案 0 :(得分:1)

你的逻辑似乎是错误的。改变

for (int i = 0; i < n; i++)
 {
     if (value == values[i])
         return true;
     else
         return false;
 }

for (int i = 0; i < n; i++)
 {
     if (value == values[i])
         return true;
 }
 return false;

否则,循环不会执行多次。

错误消息告诉您,如果if (n > 0)为真且for (int i = 0; i < n; i++)中的条件为假,则您不会返回bool(编译器不是&#39;足够聪明,知道这不会发生)

答案 1 :(得分:0)

有一种情况是你没有进入for循环..那么就不会返回任何值。你应该在for循环之后或函数结束时返回一些东西