C++中出现a.cpp:34:1: error: non-void function does not return a value in all control这类错误,意思是编译器认为条件判断语句中没有else语句,可能不是所有的情况都会进入到其它判断语句中。
源代码如下:
int getMonth(string s){
if(s == "January") return 1;
else if(s == "February") return 2;
else if(s == "March") return 3;
else if(s == "April") return 4;
else if(s == "May") return 5;
else if(s == "June") return 6;
else if(s == "July") return 7;
else if(s == "August") return 8;
else if(s == "September") return 9;
else if(s == "October") return 10;
else if(s == "November") return 11;
else if(s == "December") return 12;
}
在这个函数中,我设置了返回值但是没有else语句,虽然我能够肯定只会有这12种情况,但是编译器不会这么认为,因此就给我报错了。。。当然,这也是为了安全着想
解决方法只需要加上else语句即可:
int getMonth(string s){
if(s == "January") return 1;
else if(s == "February") return 2;
else if(s == "March") return 3;
else if(s == "April") return 4;
else if(s == "May") return 5;
else if(s == "June") return 6;
else if(s == "July") return 7;
else if(s == "August") return 8;
else if(s == "September") return 9;
else if(s == "October") return 10;
else if(s == "November") return 11;
else if(s == "December") return 12;
else return 0;
}