c++出现编译错误:
error: non-void function does not return a value in all control paths [-Werror,-Wreturn-type]
}
代码为
int operPriority(char x) {
if (x == '#')
return 1;
else if (x == '$')
return 2;
else if (x == '+' || x == '-')
return 3;
else if (x == '*' || x == '/')
return 4;
}
原因分析
不是所以的条件分支都能走到,虽然我们可能限制了x的输入范围,觉得不会有其他情况,但是编译器可是最严谨的,它可不这么认为,因此会给你报错,让你把其他情况都写清楚。
修改
int operPriority(char x) {
if (x == '#')
return 1;
else if (x == '$')
return 2;
else if (x == '+' || x == '-')
return 3;
else if (x == '*' || x == '/')
return 4;
//else一点不能忘记
else
return 0;
}
反思
if
else if
else if
…
else
一定要这样写全了,像编译器一样,严谨一点-。-