意外不是所有控制路径都返回一个值



我目前正在用C++编写一个程序,并创建了一个名为parseText的函数。当我运行此函数时,我会收到警告"并非所有控制路径都返回值",但在多次查看此代码后,我无法找出发生这种情况的原因。这是一个错误还是我遗漏了什么。

int parseText(std::string line, std::string *posResponses) {
for (int x = 0; x < line.length(); x++) {
line.at(x) = toupper(line.at(x));
}
if (line == "HELP") {
runHelp(3);
return 0;           //returns 0 if user entered invalid response and needs to repeat the code
}else if (line == "QUIT") {
return 2;           //returns 2 if user wants to quit 
}
if (posResponses->size() == 1 && posResponses[0] == line) {
return 1;           //returns 1 if there was a valid response               
}else if (posResponses[0] == "int") {
int x = posResponses[1].size();
for (int i = 0; i <= x; i++) {
if (posResponses[1].at(i) < 48 || posResponses[1].at(i) > 57) {
return 0;   //returns 0 if user entered invalid response and needs to repeat the code
}
return 1;       //returns 1 if there was a valid response
}
}
else{
int x = posResponses->size();
for (int i = 0; i <= x; i++) {
if (posResponses[i] == line) {
return 1;   //returns 1 if there was a valid response
}
}
return 0;           //returns 0 if user entered invalid response and needs to repeat the code
}
}

在此if分支中

} else if (posResponses[0] == "int") {
int x = posResponses[1].size();
for (int i = 0; i <= x; i++) {
if (posResponses[1].at(i) < 48 || posResponses[1].at(i) > 57) {
return 0;   //returns 0 if user entered invalid response and needs to repeat the code
}
return 1;       //returns 1 if there was a valid response
}
}

如果x被分配了一个值< 0,则根本不会输入for循环,则不会为该分支输入return语句。

也许您确信x在运行时不会为负数,但编译器必须在编译时为所有分支确认这一点。

我不确定你的意图,你可能想要

} else if (posResponses[0] == "int") {
if (posResponses[1].size() == 0 || posResponses[1].at(0) < 48 || posResponses[1].at(0) > 57) {
return 0;   //returns 0 if user entered invalid response and needs to repeat the code
}
return 1;       //returns 1 if there was a valid response
}

最新更新