c - 错误: control may reach end of non-void function

标签 c function

当我尝试编译包含线性搜索函数声明的 c 文件时,出现了此错误

bool search(int value, int values[], int n)
{
// TODO: implement a searching algorithm
  for(int d = 0;d<n;d++){
    if(n<0){
     return false;
    } 
    else if(values[d]==value){
      return true;
    }
    else{
      return false;
    }
  }
}

我的代码有什么问题吗?请帮忙。

最佳答案

代码的一些问题:

  1. 当参数 n = 负数或 0 时,该方法有一个不返回任何内容的路径,如注释所示
  2. for 循环不执行任何操作,只会执行一次并在满足其中一个条件时退出。仅当第一个元素是搜索的元素时,它才会正确工作,在任何其他情况下,仅检查第一个元素并返回(没有存在或不存在的正确信息)。使用数组 int value[] = { 1, 2, 3, 4, 5 }; 进行测试并搜索 3,您的代码将找不到该值。

如果您要搜索特定值,则代码为:

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

关于c - 错误: control may reach end of non-void function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25669541/

相关文章:

c - 编程指针问题

php - 如何将这个php slugify函数重写到mysql?

javascript - 将私有(private)变量转换为公共(public)变量

PHP 5.3 命名空间 我应该使用每个带反斜杠的 PHP 函数吗?

在 Linux 上交叉构建第三方库位置

c - 没有必要跟踪一个函数的所有递归调用

c++ - 从 .bin arm 处理器应用程序到 Arm 的 C++ 的源代码

c - 如何在C中读取各种类型的用户输入?

c++ - c++ 函数返回值的幕后花絮

PHP 在外部文件的类中调用函数,语法?