C++ enum列舉 用法筆記

本文介绍了C++中enum的使用,包括其特性:成员默认从0开始递增,名称不可重复但数值可能重复,只能使用整数常量。讲解了enum的声明方式,分为声明枚举类型和定义枚举变量。示例展示了如何声明和初始化enum变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

※這邊用來記錄enum列舉的使用語法
  • 介紹:
    enum列舉,使用在賦予一些"有範圍"的特定屬性。
  • 特性:
      - 列舉成員的列舉值初始值為0,之後的成員為累加1
      - 列舉成員名稱不可重複,但儲存值可以重複
      - 列舉值只能是整數常數(正負皆可),但不可為浮點數
  • 使用語法:
      - 列舉的語法分為兩部分,分別是宣告"列舉名稱及成員" & “列舉變數”。
      - 列舉中的成員(列舉子)為常數,不能修改。

以下語法中的中括號[]皆不需輸入,但大括號則需要

  • 宣告 列舉名稱
    enum   [列舉名稱]   { a, b, c, d, e };      註:大括號內的a,b,c,d,e為列舉成員
    ex : enum myenum { a, b, c,};                註:列舉成員須以逗號’,'結尾,最後一個則可省略
  • 宣告 列舉變數
    (enum)   [列舉變數] = 列舉成員(初始值)     註:列舉變數只接受傳遞來自相同列舉名稱的列舉子
    ex : enum myenum var1 = a;                      註:這裡的enum可省略,可寫成如下
    ex : myenum var1 = a;
#include "pch.h"
#include <iostream>
using namespace std;
//每個列舉子(除了最後一個)須以逗號','結尾
//並且可以在宣告時給定一個列舉值,且不須獨一無二
//列舉中的成員需要為獨一無二不可重複
enum test {
	a, 		 //第一個列舉子預設列舉值為 1
	b,  	 //預設由上個列舉子累加1 > 1
	c,  	 //預設由上個列舉子累加1 > 2
	d = 1, 	 //宣告時給列舉值(列舉值可以重複不須獨一無二)
	e,  	 // 2
	f,  	 // 3,最後一個列舉子可以省略結尾的逗號
} test1;  	 //可接受在宣告完列舉名稱後在大括號後直接宣告列舉名稱

int main()
{
	test  mytest;  //接受一開始不初始化,並需在之後再給定列舉子  
	mytest = a;    //給定一個已宣告
	//------------------------------------------------------------------
	test mytest2 = c;  //一開始宣告mytest2時就初始化它的值為列舉子c,所以為2
	//------------------------------------------------------------------
	test mytest3 = (test)6;  //可接受強制型別轉換
	//------------------------------------------------------------------
	cout << mytest << endl;		//0
	cout << mytest2 << endl;	//2
	cout << mytest3 << endl;	//6
	cout << a << endl;			//0
	cout << b << endl;			//1
	cout << f << endl;			//3
	return 0;
}
### C++ 枚举 (`enum`) 的使用方法 #### 什么是 `enum`? 在 C++ 中,`enum` 是一种用于定义一组具名常量的数据类型。通过使用枚举,可以使代码更易于阅读和维护,同时提供更强的类型安全性。 --- #### 基本语法 以下是 `enum` 的基本声明方式: ```cpp enum 名称 { 枚举值列表 }; ``` 例如: ```cpp enum Colors { Red, Green, Blue }; ``` 在此例子中,`Red`, `Green`, 和 `Blue` 被赋予默认整数值分别为 `0`, `1`, 和 `2`[^1]。 如果需要自定义初始值,则可以通过显式赋值实现: ```cpp enum Numbers { One = 1, Two = 2, Three = 4 }; ``` 这里,`One` 对应于 `1`,`Two` 对应于 `2`,而 `Three` 则对应于 `4`[^3]。 --- #### 如何使用 `enum`? 下面是一个完整的程序示例来演示如何使用 `enum`: ```cpp #include <iostream> using namespace std; int main() { // 定义一个枚举类型 enum GameResult { WIN, LOSE, TIE }; // 创建一个枚举变量并初始化 GameResult result = WIN; // 条件判断 if (result == WIN) { cout << "胜利!" << endl; } else if (result == LOSE) { cout << "失败..." << endl; } else if (result == TIE) { cout << "平局." << endl; } return 0; } ``` 在这个例子中,`GameResult` 表示游戏的结果可能有三种情况:获胜(`WIN`)、失败(`LOSE`) 或 平局(`TIE`)。这些名称比直接使用的数字更具描述性。 --- #### 强类型枚举 `enum class` 为了增强类型安全性和防止命名冲突,C++11 引入了 `enum class`。它的工作原理类似于普通的 `enum`,但是提供了更好的封装特性。 ##### 示例代码: ```cpp #include <iostream> // 使用强类型枚举 enum class Direction { North, South, East, West }; void showDirection(Direction dir) { switch(dir){ case Direction::North: std::cout << "向北"; break; case Direction::South: std::cout << "向南"; break; case Direction::East: std::cout << "向东"; break; case Direction::West: std::cout << "向西"; break; } } int main(){ Direction d = Direction::North; showDirection(d); return 0; } ``` 注意,在访问 `enum class` 成员时必须加上作用域解析符(`.`),这有助于避免不同枚举之间的名字冲突[^2]。 --- #### 错误处理与注意事项 尝试将两个不同的传统 `enum` 类型混用可能会引发编译器警告或错误。然而,当改用 `enum class` 后,这种问题会被完全消除因为它们被设计成独立的作用域。 另外需要注意的是,尽管可以为某些数据结构分配字符作为其成员,但实际上这些字符会自动转换为其 ASCII 数字形式而不是保持原样[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值