c - 不确定 'control may reach end of non-void function' 错误消息的含义

标签 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;

}

最佳答案

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

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)为 true 并且 for (int i = 0; i < n; i++) 中的条件是 false,那么您不会返回 bool (编译器不够智能,无法知道这不会发生)

关于c - 不确定 'control may reach end of non-void function' 错误消息的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30114874/

相关文章:

我可以将 C 上的二维数组设置为(固定)(动态)吗?

c++ - 如何在 Turbo C++ 中创建基于字符的数组?

c - C 中奇怪的段错误

C - 如何获取字符串中特定单词之后的单词?

C#define 导致段错误?

c - C 中的字符串数组操作

c++ - 在编译时将文件读入字符串

c - 如何获取 select() 监视的文件描述符准备就绪的时间戳?

c++ - 为什么将 xor 与文字而不是反转一起使用(按位不是)

c - 如何访问在 main 中的另一个函数中创建的数组而不返回它?