【问题标题】:Unsure about what the 'control may reach end of non-void function' error message means [duplicate]不确定“控件可能到达非无效函数的末尾”错误消息的含义[重复]
【发布时间】:2015-05-08 02:35:17
【问题描述】:

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

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;

}

【问题讨论】:

    标签: c


    【解决方案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 &gt; 0) 为真并且for (int i = 0; i &lt; n; i++) 中的条件为假,那么你不会返回bool(编译器不够聪明,无法知道这不会发生)

    【讨论】:

    • 您建议的更改应该可以解决问题。我相信JDK不会抱怨这个问题。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-09
      • 2018-08-02
      • 2014-11-25
      相关资源
      最近更新 更多