MST

星途 面试题库

面试题:C++枚举类型的基础应用

在C++中,定义一个表示一周七天的枚举类型`Weekday`,并编写一个函数,接收该枚举类型作为参数,然后输出对应的星期几的名称。请解释枚举类型的底层存储方式。
29.8万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. 定义枚举类型Weekday并编写输出函数
#include <iostream>

// 定义表示一周七天的枚举类型
enum class Weekday {
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
};

// 函数接收Weekday枚举类型作为参数并输出对应的星期几的名称
void printWeekday(Weekday day) {
    switch (day) {
        case Weekday::Monday:
            std::cout << "Monday" << std::endl;
            break;
        case Weekday::Tuesday:
            std::cout << "Tuesday" << std::endl;
            break;
        case Weekday::Wednesday:
            std::cout << "Wednesday" << std::endl;
            break;
        case Weekday::Thursday:
            std::cout << "Thursday" << std::endl;
            break;
        case Weekday::Friday:
            std::cout << "Friday" << std::endl;
            break;
        case Weekday::Saturday:
            std::cout << "Saturday" << std::endl;
            break;
        case Weekday::Sunday:
            std::cout << "Sunday" << std::endl;
            break;
    }
}
  1. 枚举类型的底层存储方式
    • 在C++中,对于普通的枚举(非enum class),如果没有显式指定底层类型,编译器会自动选择一个能够容纳枚举常量值的整型类型作为底层存储类型。例如,如果枚举常量的值范围在0255之间,编译器可能会选择unsigned char作为底层存储类型;如果值的范围更大,可能会选择int等。
    • 对于enum class(强类型枚举),如果没有显式指定底层类型,默认的底层类型是int。可以显式指定enum class的底层类型,例如:enum class Weekday : unsigned char { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday };,这样Weekday枚举类型就以unsigned char作为底层存储类型。

你可以在main函数中调用printWeekday函数来测试,例如:

int main() {
    Weekday today = Weekday::Tuesday;
    printWeekday(today);
    return 0;
}