我的C++代码如下所示:
int f(int i){
if (i > 0) return 1;
if (i == 0) return 0;
if (i < 0) return -1;
}
Run Code Online (Sandbox Code Playgroud)
它工作但我仍然得到:
警告:没有返回,函数返回非void
即使很明显所有案例都被涵盖了.有没有办法以"正确"的方式处理这个问题?
编译器没有意识到if条件涵盖了所有可能的条件.因此,它认为执行流程仍然可以通过所有ifs.
因为这些条件中的任何一个都假定其他条件为假,您可以这样写:
int f(int i) {
if (i > 0) return 1;
else if (i == 0) return 0;
else return -1;
}
Run Code Online (Sandbox Code Playgroud)
并且因为return语句最终终止了一个函数,我们可以将它缩短为:
int f(int i) {
if (i > 0) return 1;
if (i == 0) return 0;
return -1;
}
Run Code Online (Sandbox Code Playgroud)
注意缺少两个elses.