【发布时间】:2014-04-20 01:42:32
【问题描述】:
我无法弄清楚为什么会发生此错误:error: control may reach end of non-void function
代码如下:
bool search(int value, int values[], int n) {
if (n < 1) {
return false;
}
for (int i = 0; i < n; i++) {
if (values[i] == value) {
return true;
break;
}
else {
return false;
}
}
}
我了解该错误意味着该函数可能会在没有返回任何内容的情况下结束,但我无法弄清楚这是如何发生的。
【问题讨论】:
-
编译器不会“深入”分析函数中代码的“意义”。只需在函数末尾添加
return false;。这甚至会使第一个if变得不必要。 -
顺便说一句,看起来你的循环只检查
values[0]。 -
我知道我在这里聚会迟到了,你的作业已经完成或者你几年前就放弃了,但为了完整起见,我想指出:1)有return true 后绝对不需要中断; return 退出函数,因此跳出循环是多余的。 2)如果(条件)返回真;否则返回假;意味着您只会测试一次条件。简单地说,我永远不会达到高于 0 的值。