在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”?