C++ 我的switch语句在C++;

C++ 我的switch语句在C++;,c++,C++,我应该有一周中的一天。0应该是星期一,6应该是星期天。我不知道这是运行时错误还是什么。我已经尝试了我能想到的一切 #include <iostream> using namespace std; string getDayOfWeek(int dayNum){ string dayName; switch (dayNum){ case 0: dayName = "Sunday"; break; case 1:

我应该有一周中的一天。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;
字符串getDayOfWeek(int dayNum){
字符串dayName;
开关(dayNum){
案例0:
dayName=“星期日”;
打破
案例1:
dayName=“星期一”;
打破
案例2:
dayName=“星期二”;
打破
案例3:
dayName=“星期三”;
打破
案例4:
dayName=“星期四”;
打破
案例5:
dayName=“星期五”;
打破
案例6:
dayName=“星期六”;
打破
违约:
dayName=“无效的天数!”;
}
}
int main()
{

cout我认为在上述示例中,您希望打印
Monday
,但是
getDayOfWeek()
函数中没有
return
语句。请添加
return dayName;
并重试。

您的函数
std::string getDayOfWeek(int dayNum)
需要
返回
a
std::string

您可以在
开关
语句中正确执行此操作:

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!";
    }
}

对于非
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)];
}
#包括//标准::分钟
#include//for std::string
const std::string&getDayOfWeek(未签名的dayNum){
静态标准::字符串数据[]={
“星期一”,
“星期二”,
“星期三”,
“星期四”,
“星期五”,
“星期六”,
“星期日”,
“无效的日数!”
};
返回数据[std::min(dayNum,7u)];
}

注意:(i)由于
静态
数组在程序的生命周期内有效,因此返回的引用从不悬空;(ii)向
无符号类型的隐式转换只允许在一条边上进行错误处理?

您不返回任何内容。将
return dayName;
放在
switch
语句之后。或者在每个
案例中只
return
而不是将结果赋给变量和
break
ing。顺便说一句,这是s选择一本关于为什么要注意编译器警告Python?octave?sql的示例书?这个副本是错误的。这个副本是关于试图打开字符串的。但是OP正确地打开了
int
,并在其中的大小写中分配给字符串,他的错误是另一个。@Bathsheba对
常量不感兴趣我提到的东西,我很困惑。我在想
getDayOfWeek
返回一个
std::string&
data
was
const
,这是相反的。我猜它从星期天开始是
struct tm
兼容的。很好的一个:)+1
const\u cast(getDayOfWeek(0))=“合法黑客”
除非生成
数据
常量
谢谢大家。我是编程新手,但我确实注意到这是一个小学生犯的错误。是的,我认为这是对操作的正确修复。漂亮、清晰、简单。+1