我的开关语句在C++中不起作用

My switch statement is not working in C++

本文关键字:不起作用 C++ 开关 语句 我的      更新时间:2023-10-16

我应该得到一周中的一天。 0 应该是星期一,6 应该是星期日。我不知道是运行时错误还是什么。我已经尝试了我能想到的一切。

#include <iostream>
using namespace std;
string getDayOfWeek(int dayNum){
string dayName;
switch (dayNum){
case 0:
dayName = "Sunday";
break;
case 1:
dayName = "Monday";
break;
case 2:
dayName = "Tuesday";
break;
case 3:
dayName = "Wednesday";
break;
case 4:
dayName = "Thursday";
break;
case 5:
dayName = "Friday";
break;
case 6:
dayName = "Saturday";
break;
default:
dayName = "Invalid Day Number!";
}
}
int main()
{
cout << getDayOfWeek(1);
return 0;
}

>你的函数std::string getDayOfWeek(int dayNum)需要return一个std::string

您可以在switch语句中执行此操作:

std::string getDayOfWeek(int dayNum){
switch (dayNum){
case 0:
return "Sunday";
case 1:
return "Monday";
case 2:
return "Tuesday";
case 3:
return "Wednesday";
case 4:
return "Thursday";
case 5:
return "Friday";
case 6:
return "Saturday";
default:
return "Invalid Day Number!";
}
}

我认为您想在上面给出的示例中打印Monday,但是getDayOfWeek()函数中没有return语句。请添加return dayName;,然后重试。

您缺少非void函数的return值。这是未定义的行为。此外,如果您希望0问题措辞所述Monday,则索引不正确。

为什么不简单地使用

#include <algorithm> // for std::min
#include <string> // for std::string
const std::string& getDayOfWeek(unsigned dayNum){
static std::string data[] = {
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday",
"Invalid Day Number!"
};
return data[std::min(dayNum, 7u)];
}

注意 (i( 返回的引用永远不会悬空,因为static数组在程序的生命周期内有效,以及 (ii( 隐式转换为unsigned类型只允许在一个边上进行错误处理?