C語言數(shù)據(jù)類型枚舉enum全面詳解示例教程
一、枚舉類型的定義
enum Day//enum Day是一種類型
{
Mon,//周一到周日這些叫枚舉的可能取值,也叫枚舉常量
Tue,
Wed,
Thur,
Fri,
Sat,
Sun,
};
上述代碼定義的enum Day是一種枚舉類型,{}中內(nèi)容是枚舉類型的可能取值,也可叫作枚舉常量。
這些枚舉常量都是有值的,默認(rèn)從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);
}
賦初值后打印初值內(nèi)容,如果你有一個(gè)沒有賦值,會(huì)緊接上一個(gè)賦值內(nèi)容+1
這里green并沒有賦值,但我們知道red是2,按照枚舉規(guī)則,green會(huì)在red的基礎(chǔ)上加1變成3,注意,blue是有賦值的,所以blue不需要在green的基礎(chǔ)上加1,blue就是6

注意:因?yàn)槭敲杜e{}內(nèi)的叫作枚舉常量,常量是不能改的,比如你在main函數(shù)里進(jìn)行賦值操作,red=9;這個(gè)鐵鐵的會(huì)報(bào)錯(cuò),一定要區(qū)分枚舉初始化和賦值的區(qū)別。
二、枚舉類型的使用
2.1創(chuàng)建變量
我們前面說過,enum Day、enum Color這種叫作枚舉類型,既然它是類型,它就可以創(chuàng)建變量,
代碼如下:
#include<stdio.h>
enum Color//enum Color是一種類型
{
red,
green,
blue
};
int main()
{
enum Color a = 1;
enum Color b = green;
}
我們用枚舉類型創(chuàng)建了變量a和b,這里需要注意的是,把1賦給a,在c語言環(huán)境下編譯器不會(huì)報(bào)錯(cuò),但c++下就會(huì)出現(xiàn)問題,編譯器會(huì)認(rèn)為1是一個(gè)整形,你賦給一個(gè)枚舉類型顯然是有問題的。所以我們這里最好把枚舉可能取值賦給枚舉變量。
2.2一些優(yōu)點(diǎn)
到這里大家可能會(huì)有一些疑惑,我們可以用#define來定義常量,為什么要用枚舉呢?我們來看一下它們的區(qū)別:
代碼如下(示例):
#define red 2
#define green 4
#define blue 8
enum Color
{
Red,
Green,
Blue
};
首先由2.1知,c++環(huán)境下,枚舉類型會(huì)對(duì)其他類型的賦值進(jìn)行警告,而#define定義的常量是沒有類型的;
第二就是防止命名污染,舉個(gè)栗子:#define red 2,這是全局范圍命名red為2,那假如你其他地方用到2這個(gè)數(shù)字,到時(shí)候到底是2本身還是red的意思?而枚舉定義的red是枚舉類型的一個(gè)可能取值,不會(huì)影響到其他數(shù)據(jù);
第三,枚舉是可以調(diào)試的,調(diào)試的過程中你大可輸入枚舉類型創(chuàng)建的變量,但是#define red 2這種,red如果在代碼中會(huì)被自動(dòng)替換為2,你無法用red進(jìn)行監(jiān)視
第四,就是可以一次定義多個(gè)枚舉常量
總結(jié)
今天我們學(xué)完了枚舉的相關(guān)定義,枚舉類型的使用以及枚舉相對(duì)于#define定義的區(qū)別,下一期筆者還會(huì)繼續(xù)更新C語言聯(lián)合(共用體相關(guān)知識(shí)),期待你的關(guān)注,預(yù)祝讀者學(xué)習(xí)愉快!更多關(guān)于C語言enum枚舉數(shù)據(jù)類型的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Qt 使用Poppler實(shí)現(xiàn)pdf閱讀器的示例代碼
下面小編就為大家分享一篇Qt 使用Poppler實(shí)現(xiàn)pdf閱讀器的示例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-01-01
C++類與對(duì)象深入之構(gòu)造函數(shù)與析構(gòu)函數(shù)詳解
朋友們好,這篇播客我們繼續(xù)C++的初階學(xué)習(xí),現(xiàn)在對(duì)我們對(duì)C++非常重要的一個(gè)知識(shí)點(diǎn)做出總結(jié),整理出來一篇博客供我們一起復(fù)習(xí)和學(xué)習(xí),如果文章中有理解不當(dāng)?shù)牡胤?還希望朋友們?cè)谠u(píng)論區(qū)指出,我們相互學(xué)習(xí),共同進(jìn)步2022-06-06
C語言中的自定義類型之結(jié)構(gòu)體與枚舉和聯(lián)合詳解
今天我們來學(xué)習(xí)一下自定義類型,自定義類型包括結(jié)構(gòu)體、枚舉、聯(lián)合體,小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考2022-06-06
C語言typedef與復(fù)雜函數(shù)聲明問題的深入解析
以下是對(duì)C語言中的typedef與復(fù)雜函數(shù)聲明問題進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下2013-07-07
QT的QWebEngineView類知識(shí)點(diǎn)詳細(xì)介紹
QWebEngineView是Qt框架中的組件,基于Chromium內(nèi)核,支持HTML5、CSS3、JavaScript等Web技術(shù),適用于嵌入網(wǎng)頁內(nèi)容到Qt應(yīng)用程序,它提供了豐富的接口如加載、導(dǎo)航、與JavaScript交互等,并支持信號(hào)槽機(jī)制處理各種網(wǎng)頁事件,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-10-10

