情景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语法时,’控制可能会达到非空函数的结尾’所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)