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