5

C语言自定义类型之枚举

 1 month ago
source link: https://www.biaodianfu.com/c-enum.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

器→工具, 编程语言

C语言自定义类型之枚举

钱魏Way · 2024-03-18 · 8 次浏览

在C语言中,枚举(enum)是一种用户自定义的数据类型,可以让代码更具可读性。枚举创建了一个新的类型,其值由你设定的一组命名的整数常量(称为枚举器)组成。

enum.png

枚举类型的主要用途是使代码更具可读性和维护性。使用枚举常量,而不是直接使用整数值,可以使代码更容易理解。

枚举在C语言编程中有许多优点:

  • 改善可读性:枚举常量具有描述性的名称,这使得代码更易于阅读和理解。例如,使用MONDAY、TUESDAY等枚举常量要比直接使用0、1等整数直观得多。
  • 类型安全:枚举创建了一个新的用户定义的数据类型。这意味着你不能将不适当的值赋给枚举类型的变量。这增加了类型安全。
  • 易于维护:如果你需要修改枚举常量的值,只需要在定义枚举的地方修改,而不需要在整个程序中查找和修改。
  • 方便比较:枚举常量在比较操作中很有用,因为它们是整数类型。
  • 节省空间:相比于其他可用于表示常量的类型(如整型或字符串),枚举更加节省空间。
  • 方便调试:在调试过程中,可以直接看到枚举常量的名字,而不是它们的整数值,这可以帮助快速定位和解决问题。

因此,当你有一组相关的整数常量需要在代码中使用时,使用枚举常量而不是直接使用整数值,可以让你的代码更容易理解和维护。

定义枚举类型的基本语法是:

enum tag_name {
constant1,
constant2,
constant3,
enum tag_name {
    constant1,
    constant2,
    constant3,
    ...
};

在这里,tag_name是枚举类型的名称,通常依照其表示的内容命名。constant1,constant2,constant3等是枚举的成员,也称为枚举常量。

c-enum.png

例如,我们可以定义一个枚举类型来表示一个星期的七天:

enum Weekday {
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
enum Weekday {
    Sunday,
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday
};
week.png
在此示例中,Weekday是枚举类型的名称,Sunday,Monday,Tuesday等是它的成员。注意,枚举常量的名称通常以大写字母开头,以符合命名规范。
如果没有明确赋值,枚举常量的值从0开始,按声明的顺序递增。在上述示例中,Sunday的值为0,Monday的值为1,以此类推。当然,你也可以给枚举常量显式指定值:
在此示例中,Weekday是枚举类型的名称,Sunday,Monday,Tuesday等是它的成员。注意,枚举常量的名称通常以大写字母开头,以符合命名规范。
如果没有明确赋值,枚举常量的值从0开始,按声明的顺序递增。在上述示例中,Sunday的值为0,Monday的值为1,以此类推。当然,你也可以给枚举常量显式指定值:
enum Weekday {
Sunday = 7,
Monday = 1,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday = 6
enum Weekday {
    Sunday = 7,
    Monday = 1,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday = 6
};

在这个例子中,Sunday的值被显式设置为7,Monday的值被显式设置为1,Tuesday的值将自动设置为2(因为默认情况下,每个成员的值比前一个成员的值大1),Saturday的值被显式设置为6。

在定义了枚举类型后,你可以像使用其他类型一样使用它。例如,创建一个枚举变量:

enum Weekday today = Sunday;
enum Weekday today = Sunday;

在这个例子中,我们创建了一个Weekday类型的变量today,并将其设置为Sunday。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK