C語言數據類型枚舉enum全面詳解示例教程

一、枚舉類型的定義

enum Day//enum Day是一種類型
{
	Mon,//周一到周日這些叫枚舉的可能取值,也叫枚舉常量
	Tue,
	Wed,
	Thur,
	Fri,
	Sat,
	Sun,
};

上述代碼定義的enum Day是一種枚舉類型,{}中內容是枚舉類型的可能取值,也可叫作枚舉常量。
這些枚舉常量都是有值的,默認從0開始,依次往後遞增1,如果你願意賦值也是可以的。

代碼如下:

#include<stdio.h>
enum Color//enum Color是一種類型
{
	red,
	green,
	blue
};
int main()
{
	printf("%d\n", red);
	printf("%d\n", green);
	printf("%d\n", blue);
}

不賦初值打印0, 1,2

在這裡插入圖片描述

#include<stdio.h>
enum Color//enum Color是一種類型
{
	red=2,
	green,
	blue=6
};
int main()
{
	printf("%d\n", red);
	printf("%d\n", green);
	printf("%d\n", blue);
}

賦初值後打印初值內容,如果你有一個沒有賦值,會緊接上一個賦值內容+1
這裡green並沒有賦值,但我們知道red是2,按照枚舉規則,green會在red的基礎上加1變成3,註意,blue是有賦值的,所以blue不需要在green的基礎上加1,blue就是6

在這裡插入圖片描述

註意:因為是枚舉{}內的叫作枚舉常量,常量是不能改的,比如你在main函數裡進行賦值操作,red=9;這個鐵鐵的會報錯,一定要區分枚舉初始化和賦值的區別。

二、枚舉類型的使用

2.1創建變量

我們前面說過,enum Day、enum Color這種叫作枚舉類型,既然它是類型,它就可以創建變量,

代碼如下:

#include<stdio.h>
enum Color//enum Color是一種類型
{
	red,
	green,
	blue
};
int main()
{
	enum Color a = 1;
	enum Color b = green;
}

我們用枚舉類型創建瞭變量a和b,這裡需要註意的是,把1賦給a,在c語言環境下編譯器不會報錯,但c++下就會出現問題,編譯器會認為1是一個整形,你賦給一個枚舉類型顯然是有問題的。所以我們這裡最好把枚舉可能取值賦給枚舉變量。

2.2一些優點

到這裡大傢可能會有一些疑惑,我們可以用#define來定義常量,為什麼要用枚舉呢?我們來看一下它們的區別:

代碼如下(示例):

#define red 2
#define green 4
#define blue 8

enum Color
{
	Red,
	Green,
	Blue
};

首先由2.1知,c++環境下,枚舉類型會對其他類型的賦值進行警告,而#define定義的常量是沒有類型的;

第二就是防止命名污染,舉個栗子:#define red 2,這是全局范圍命名red為2,那假如你其他地方用到2這個數字,到時候到底是2本身還是red的意思?而枚舉定義的red是枚舉類型的一個可能取值,不會影響到其他數據;

第三,枚舉是可以調試的,調試的過程中你大可輸入枚舉類型創建的變量,但是#define red 2這種,red如果在代碼中會被自動替換為2,你無法用red進行監視
第四,就是可以一次定義多個枚舉常量

總結

今天我們學完瞭枚舉的相關定義,枚舉類型的使用以及枚舉相對於#define定義的區別,下一期筆者還會繼續更新C語言聯合(共用體相關知識),期待你的關註,預祝讀者學習愉快!更多關於C語言enum枚舉數據類型的資料請關註WalkonNet其它相關文章!

推薦閱讀: