日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

C++和C语言中enum 如何使用

發(fā)布時(shí)間:2025/6/15 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++和C语言中enum 如何使用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

c++語(yǔ)言中enum類型的用法

枚舉類型,顧名思義,“枚”作為量詞,作“個(gè)”講,那么枚舉,就是一個(gè)一個(gè)的列舉,如果一件事情能夠被一個(gè)一個(gè)的列舉,那么它的數(shù)量肯定就是有限的,否則是不能被一一列舉出來(lái)的。所以枚舉類型即為能被列舉的常量的一個(gè)集合。

在生活中,枚舉的例子隨處可見,比如禮拜幾,那么就可以作為一個(gè)枚舉變量。這個(gè)變量所存儲(chǔ)的值,是有限的,且,能被我們所列舉。再比較說(shuō),性別。它也可以作為一個(gè)枚舉類型,我們知道,性別也就只有“男”或者“女”,它是可以被我們所列舉的。它能很直觀的表達(dá)出我們所定義的事件。

如:定義一個(gè)枚舉類型的變量,雖然不知道變量具體是什么值,但能知道它可能會(huì)有哪些值,這樣,這樣,就能對(duì)程序中所出現(xiàn)的變量的取值有一個(gè)很好的估量,從而使程序的編寫更加順利。

枚舉類型的定義寫結(jié)構(gòu)體的定義相似,其形式為:

enum?枚舉名{?
? ?? ?? ?? ?? ?標(biāo)識(shí)符[=整型常數(shù)],?
? ?? ?? ?? ?? ?標(biāo)識(shí)符[=整型常數(shù)],?

...?

? ?? ?? ?? ?? ?標(biāo)識(shí)符[=整型常數(shù)],?

}?
枚舉變量;
? ??如果枚舉沒(méi)有初始化,?即省掉"=整型常數(shù)"時(shí),?則從第一個(gè)標(biāo)識(shí)符開始,
依次
次賦給標(biāo)識(shí)符0, 1, 2, ...。但當(dāng)枚舉中的某個(gè)成員賦值后,?其后的成員按依次?
1的規(guī)則確定其值。
例如下列枚舉說(shuō)明后, x1, x2, x3, x4的值分別為0, 1, 2, 3?

enum string{x1, x2, x3, x4}x;?

? ??當(dāng)定義改變成:?

enum string?


{?


x1,?


x2=0,?


x3=50,?


x4,?


}x;?

? ??x1=0, x2=0, x3=50, x4=51?
? ??注意:?

1.?
枚舉中每個(gè)成員(標(biāo)識(shí)符)結(jié)束符是",",
不是";",?最后一個(gè)成員可省略?
","?

2.?
初始化時(shí)可以賦負(fù)數(shù),?以后的標(biāo)識(shí)符仍依次加1?

3.?
枚舉變量只能取枚舉說(shuō)明結(jié)構(gòu)中的某個(gè)標(biāo)識(shí)符常量。?
? ??例如:?

enum string?


{?


x1=5,?


x2,?


x3,?


x4,?


};?


enum strig x=x3;?

此時(shí),?枚舉變量x實(shí)際上是7

4.在外部,我們可以對(duì)枚舉變量進(jìn)行賦值,不過(guò),得要進(jìn)行類型轉(zhuǎn)換。
? ?? ?? ?如果我們不進(jìn)行類型輪換,即如下所示進(jìn)行賦值:

x = 3;

是不允許是,如果對(duì)X進(jìn)行賦值,只能對(duì)3進(jìn)行類型轉(zhuǎn)換.即:
x = (string)3;
那么這樣就對(duì)了.
如果給x賦的不是一個(gè)整形的數(shù),而是一個(gè)字符型的,如:
x = (string)’a’;
那么這時(shí)候x的值并不是字符’a’,而是’a’ASCII碼,我們知道,在枚舉類型中,各常量的值只能是整形的,所以在對(duì)上例會(huì)自動(dòng)的將’a’轉(zhuǎn)換成一個(gè)整數(shù)值.從內(nèi)存的角度來(lái)看來(lái)話,其實(shí)C/C++中整形和字符型的變量是一樣的,它們之間可以互相轉(zhuǎn)換.

下面是一個(gè)使用枚舉類型的例子.(從網(wǎng)上收集得到)
#include <iostream>

#include <iostream>
using namespace?std;

enum
?Day?{Saturday,?Sunday?=?0,?Monday,?Tuesday,?Wednesday,
Thursday,?Friday};?//Saturday = 0 by default, Sunday = 0 as well
void?Prnt?(Day day)??// Print whether a day is a 'Weekend' or a "Weekday".
{
? ? ? ? if
?(day?==0)?cout?<<?"Weekend"?<<?endl;
? ? ? ? else
?cout?<<?"Weekday"?<<?endl;
}


int
?main(){
? ? ? ? enum
?Fruit?{apple,?pear,?orange,?banana}?frt1;?// 'frt1' can be declarated here.
? ? ? ??
? ? ? ? // int apple; // error: redefinition of 'apple'
? ? ? ??
? ? ? ? typedef enum
?Fruit ShuiGuo;?// In c++, 'enum' can be omitted.
? ? ? ??
? ? ? ? enum
?Fruit frt2?=?apple;?// In c++, 'enum' can be omitted.
? ? ? ? ShuiGuo frt3?=?pear;?// After type-declaration synonym, 'enum' can not exist here!
? ? ? ??
? ? ? ? frt1?= (Fruit)?0;?// 'frt1' can be assigned with number by explicit cast.
? ? ? ??
? ? ? ? for
?(int?i?=?apple;?i?<=?banana;?i++)
? ? ? ? ? ? ? ? switch
?(i)
? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ?? ? case
?apple:?cout?<<?"apple"?<<?endl;?break;
? ? ? ? ? ? ? ?? ? case
?pear:?cout?<<?"pear"?<<?endl;?break;
? ? ? ? ? ? ? ?? ? case
?orange:?cout?<<?"orange"?<<?endl;?break;
? ? ? ? ? ? ? ?? ? case
?banana:?cout?<<?"banana"?<<?endl;?break;
? ? ? ? ? ? ? ?? ? default
:?break;
? ? ? ? ? ? ? ? }

? ? ? ??
? ? ? ? // Print whether a day is a 'Weekend' or a "Weekday".
? ? ? ? Prnt?(Saturday);
? ? ? ? Prnt?(Sunday);
? ? ? ? Prnt?(Monday);
? ? ? ? Prnt?(Tuesday);
? ? ? ? Prnt?(Wednesday);
? ? ? ? Prnt?(Thursday);
? ? ? ? Prnt?(Friday);
? ? ? ??
? ? ? ??
? ? ? ? return
?0;
}

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

c語(yǔ)言中enum類型的用法

11.10 枚舉類型

在實(shí)際問(wèn)題中,有些變量的取值被限定在一個(gè)有限的范圍內(nèi)。例如,一個(gè)星期內(nèi)只有七天,一年只有十二個(gè)月,一個(gè)班每周有六門課程等等。如果把這些量說(shuō)明為整型,字符型或其它類型顯然是不妥當(dāng)?shù)摹榇?#xff0c;C語(yǔ)言提供了一種稱為“枚舉”的類型。在“枚舉”類型的定義中列舉出所有可能的取值,被說(shuō)明為該“枚舉”類型的變量取值不能超過(guò)定義的范圍。

應(yīng)該說(shuō)明的是,枚舉類型是一種基本數(shù)據(jù)類型,而不是一種構(gòu)造類型,因?yàn)樗荒茉俜纸鉃槿魏位绢愋汀?/p>

11.10.1 枚舉類型的定義和枚舉變量的說(shuō)明

1. 枚舉的定義

枚舉類型定義的一般形式為:

enum 枚舉名{ 枚舉值表 };

在枚舉值表中應(yīng)羅列出所有可用值。這些值也稱為枚舉元素。

例如:

該枚舉名為weekday,枚舉值共有7個(gè),即一周中的七天。凡被說(shuō)明為weekday類型變量的取值只能是七天中的某一天。

2. 枚舉變量的說(shuō)明

如同結(jié)構(gòu)和聯(lián)合一樣,枚舉變量也可用不同的方式說(shuō)明,即先定義后說(shuō)明,同時(shí)定義說(shuō)明或直接說(shuō)明。

設(shè)有變量a,b,c被說(shuō)明為上述的weekday,可采用下述任一種方式:

enum weekday{ sun,mou,tue,wed,thu,fri,sat };

enum weekday a,b,c;

或者為: enum weekday{ sun,mou,tue,wed,thu,fri,sat }a,b,c;

或者為: enum { sun,mou,tue,wed,thu,fri,sat }a,b,c;

11.10.2 枚舉類型變量的賦值和使用

? 枚舉類型在使用中有以下規(guī)定:

1. 枚舉值是常量,不是變量。不能在程序中用賦值語(yǔ)句再對(duì)它賦值。 例如對(duì)枚舉weekday的元素再作以下賦值: sun=5; mon=2; sun=mon; 都是錯(cuò)誤的。

2. 枚舉元素本身由系統(tǒng)定義了一個(gè)表示序號(hào)的數(shù)值,從0開始順序定義為0,1,2…。如在weekday中,sun值為0,mon值為1,…,sat值為6。

【例11.10】

main(){ enum weekday { sun,mon,tue,wed,thu,fri,sat } a,b,c; a=sun; b=mon; c=tue; printf("%d,%d,%d",a,b,c); }

說(shuō)明: 只能把枚舉值賦予枚舉變量,不能把元素的數(shù)值直接賦予枚舉變量。如:

a=sum;

b=mon;

是正確的。而:

a=0;

b=1;

是錯(cuò)誤的。如一定要把數(shù)值賦予枚舉變量,則必須用強(qiáng)制類型轉(zhuǎn)換。 如:

a=(enum weekday)2;

其意義是將順序號(hào)為2的枚舉元素賦予枚舉變量a,相當(dāng)于:

a=tue; 還應(yīng)該說(shuō)明的是枚舉元素不是字符常量也不是字符串常量,使用時(shí)不要加單、雙引號(hào)。

【例11.11】

main(){ enum body { a,b,c,d } month[31],j; int i; j=a; for(i=1;i<=30;i++){ month[i]=j; j++; if (j>d) j=a; } for(i=1;i<=30;i++){ switch(month[i]) { case a:printf(" %2d %c\t",i,'a'); break; case b:printf(" %2d %c\t",i,'b'); break; case c:printf(" %2d %c\t",i,'c'); break; case d:printf(" %2d %c\t",i,'d'); break; default:break; } } printf("\n"); }

總結(jié)

以上是生活随笔為你收集整理的C++和C语言中enum 如何使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。