我的 C++ 代码如下所示:
int f(int i){
if (i > 0) return 1;
if (i == 0) return 0;
if (i < 0) return -1;
}
它正在工作,但我仍然得到:
警告:没有返回,在函数中返回非 void
即使很明显所有情况都包括在内。有没有办法以“正确”的方式处理这个问题?
原文由 user31027 发布,翻译遵循 CC BY-SA 4.0 许可协议
我的 C++ 代码如下所示:
int f(int i){
if (i > 0) return 1;
if (i == 0) return 0;
if (i < 0) return -1;
}
它正在工作,但我仍然得到:
警告:没有返回,在函数中返回非 void
即使很明显所有情况都包括在内。有没有办法以“正确”的方式处理这个问题?
原文由 user31027 发布,翻译遵循 CC BY-SA 4.0 许可协议
有没有办法以“正确”的方式处理这个问题?
一个简单的解决方法是去掉最后一个 if。由于前两个要么被调用,要么不被调用,如果你得到它,则必须调用第三种情况
int f(int i){
if (i > 0) return 1;
if (i == 0) return 0;
return -1;
}
我们必须这样做的原因是编译器不能保证在每种情况下都会调用您的 if 语句。由于它到达函数的末尾并且它可能没有执行任何 if 语句,它会发出警告。
原文由 NathanOliver 发布,翻译遵循 CC BY-SA 3.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.5k 阅读
3 回答491 阅读✓ 已解决
编译器没有掌握
if
条件涵盖所有可能的条件。因此,它认为执行流程仍然可以通过所有if
s。因为这些条件中的任何一个都假定其他条件为假,所以您可以这样写:
由于
return
语句最终终止了一个函数,我们可以将其缩短为:注意缺少两个
else
s。