C – 使用某些ifelse语法时,’控制可能会达到非空函数的结尾’

C – 使用某些ifelse语法时,’控制可能会达到非空函数的结尾’,第1张

概述在C中定义函数时,在以某种方式编写if / else逻辑时,我在编译器中收到“控件可能达到非空函数结束”错误(下面的场景1),但是在编写时我没有收到错误逻辑另一种方式(下面的情景2).对我来说,编写这个函数的两种方式看起来都很相似,所以我不知道版本1为什么不能编译. 情景1 bool search(int value, int values[], int n){ int i; i 在C中定义函数时,在以某种方式编写if / else逻辑时,我在编译器中收到“控件可能达到非空函数结束”错误(下面的场景1),但是在编写时我没有收到错误逻辑另一种方式(下面的情景2).对我来说,编写这个函数的两种方式看起来都很相似,所以我不知道版本1为什么不能编译.

情景1

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

场景2

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

在for循环之后,场景2是否总是返回false?或者在第一次返回值后,函数基本上是“停止”,因此一旦值与值[i]匹配,则返回“true”?

解决方法 问题是C编译器不够智能,无法确定第一个函数在没有返回值的情况下到达末尾的情况:

>当循环执行至少一次时,if语句的两个分支都有一个条件返回,和
>当循环从不执行时,将从函数顶部的条件语句返回.

C标准不需要这样的检查,因此编译器会发出警告.

总结

以上是内存溢出为你收集整理的C – 使用某些if / else语法时,’控制可能会达到非空函数的结尾’全部内容,希望文章能够帮你解决C – 使用某些if / else语法时,’控制可能会达到非空函数的结尾’所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1241024.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存