當前位置:首頁 » 編程語言 » c語言枚舉型變數用法
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言枚舉型變數用法

發布時間: 2023-04-16 04:23:54

『壹』 c語言中關於枚舉類型

1.enum
枚舉的定義
枚舉類型定義的一般形式為:
enum 枚舉名{ 枚舉值表 };
在枚舉值表中應羅列出所有可用值。這些值也稱為枚舉元素。
例如:
該枚舉名為weekday,枚舉值共有7個,即一周中的七天。凡被說明為weekday類型變數的取值只能是七天中的某一天。
2.
枚舉變數的說明
如同結構和聯合一樣,枚舉變數也可用不同的方式說明,即先定義後說明,同時定義說明或直接說明。
設有變數a,b,c被說明為上述的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;
3、枚舉類型變數的賦值和使用
枚舉類型在使用中有以下規定:
a.
枚舉值是常量,不是變數。不能在程序中用賦值語句再對它賦值。
例如對枚舉weekday的元素再作以下賦值:
sun=5;
mon=2;
sun=mon;
都是錯誤的。
b.
枚舉元素本身由系統定義了一個表示序號的數值,從0開始順序定義為0,1,2…。如在weekday中,sun值為0,mon值為1,…,sat值為6。
int 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);
return 0;
}
說明:
只能把枚舉值賦予枚舉變數,不能把元素的數值直接賦予枚舉變數。如:
a=sum;
b=mon;
是正確的。而:
a=0;
b=1;
是錯誤的。如一定要把數值賦予枚舉變數,則必須用強制類型轉換。
如:a=(enum
weekday)2;
其意義是將順序號為2的枚舉元素賦予枚舉變數a,相當於:
a=tue;
還應該說明的是枚舉元素不是字元常量也不是字元串常量,使用時不要加單、雙引號。
int 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");
return 0;
}

『貳』 C語言:輸出枚舉型變數的值,應該用什麼格式說明

在c語言中,枚舉變數,即以enum關鍵字定義的變數,是按照整型或者無符號整型來處理的。
1
如果在枚舉變數中,不存在負值,如
enum
test
{
a,
b,
};
這樣的定義,系統會將該枚舉變數按照無符號整型處理,即unsigned
int
型。輸出的時候使用%u格式即可。
enum
test
t
=
a;
printf("%u",
t);
2
如果在枚舉變數中存在負值,那麼系統按整型處理,即int型。如定義
enum
test
{
a=-199,
b,
};
輸出時,需要用%d格式:
enum
test
t
=
a;
printf("%d",
t);
3
由於枚舉變數在書寫時,一般不會太大,很少有在沒有負數的時候,即按照無符號數處理的時候超出有符號數所能表示的正數范圍,即一般不會把最高位置一,所以大多數情況下,用%d輸出都是沒問題的。

『叄』 C語言中的枚舉類型

如果一個變數只有幾種可能的值,則可以定義為 枚舉類型 。所謂「枚舉」是指將變數的值一一列舉出來,變數的值只限於列舉出來的值的范圍內。
聲明枚舉類型用 enum 開頭。例如:

聲明了一個枚舉類型enum weekday,則可以用此類型來定義變數。例如:

也可以直接定義枚舉變數,例如:

其中sun、mon、…、sat稱為 枚舉元素 枚舉常量
說明:
1、在C編譯中,對枚舉元素按常量處理,故稱為 枚舉常量 。它們不是變數,不能進行賦值。例如 sun = 7; mon = 1; 是錯誤的。
2、枚舉元素作為常量,是有值的。C語言編譯按定義時的順序使它們的值為0、1、2……也可以在定義時,指定枚舉元素的值,例如:

3、枚舉值可以用來作判斷比較。例如:

4、一個證書不能直接賦值給一個枚舉變數。例如 workday=1; 是錯誤的。它們屬於不同的類型。應該先進性強制類型轉換,然後才能賦值。例如:

相當於將序號為2的枚舉元素賦值給workday,相當於

『肆』 enum在c語言中怎麼用

1.
enum是枚舉變數
一般的定義方式如下:
enum
enum_type_name
{

ENUM_CONST_1,

ENUM_CONST_2,

...

ENUM_CONST_n
}
enum_variable_name;
注意:enum_type_name
是自定義的一種數據數據類型名,而enum_variable_name
為enum_type_name類型的一個變數,也就是我們平時常說的枚舉變數。實際上enum_type_name類型是對一個變數取值范圍的限定,而花括弧內是它的取值范圍,即enum_type_name
類型的變數enum_variable_name
只能取值為花括弧內的任何一個值,如果賦給該類型變數的值不在列表中,則會報錯或者警告。ENUM_CONST_1、ENUM_CONST_2、...、ENUM_CONST_n,這些成員都是常量,也就是我們平時所說的枚舉常量(常量一般用大寫)。
2.
enum
變數類型還可以給其中的常量符號賦值,如果不賦值則會從被賦初值的那個常量開始依次加1,如果都沒有賦值,它們的值從0
開始依次遞增1。如分別用一個常數表示不同顏色:
enum
Color
{

GREEN
=
1,

RED,

BLUE,

GREEN_RED
=
10,

GREEN_BLUE
}ColorVal;
其中各常量名代表的數值分別為:

GREEN
=
1

RED
=
2

BLUE
=
3

GREEN_RED
=
10

GREEN_BLUE
=
11
3.
在「枚舉」類型的定義中列舉出所有可能的取值,被說明為該「枚舉」類型的變數取值不能超過定義的范圍。應該說明的是,枚舉類型是一種基本數據類型,而不是一種構造類型,因為它不能再分解為任何基本類型。

『伍』 C語言枚舉類型,知道這些你就會了

在實際編程中,有些數據的取值往往是有限的,只能是非常少量的整數,並且最好為每個值都取一個名字,以方便在後續代碼中使用,比如一個星期只有七天,一年只有十二個月,一個班每周有六門課程等。
以每周七天為例,我們可以使用 #define 命令來給每天指定一個名字:

#define 命令雖然能解決問題,但也帶來了不小的副作用,導致宏名過多,代碼鬆散,看起來總有點不舒服。C語言提供了一種 枚舉(Enum)類型 ,能夠列出所有可能的取值,並給它們取一個名字。

enum 是一個新的關鍵字,專門用來定義枚舉類型,這也是它在C語言中的唯一用途; typeName 是枚舉類型的名字; valueName1, valueName2, valueName3, ...... 是每個值對應的名字的列表。注意最後的 ; 不能少。

例如,列出一個星期有幾天:

可以看到,我們僅僅給出了名字,卻沒有給出名字對應的值,這是因為枚舉值默認從 0 開始,往後逐個加 1(遞增);也就是說,week 中的 Mon、Tues ...... Sun 對應的值分別為 0、1 ...... 6。

我們也可以給每個名字都指定一個值:

更為簡單的方法是只給第一個名字指定值:

這樣枚舉值就從 1 開始遞增,跟上面的寫法是等效的。
枚舉是一種類型,通過它可以定義枚舉變數:

也可以在定義枚舉類型的同時定義變數:

有了枚舉變數,就可以把列表中的值賦給它:

或者:

Mon、Tues、Wed 這些名字都被替換成了對應的數字。這意味著,Mon、Tues、Wed 等都不是變數,它們不佔用數據區(常量區、全局數據區、棧區和堆區)的內存,而是直接被編譯到命令裡面,放到代碼區,所以不能用 & 取得它們的地址。這就是枚舉的本質。

枚舉類型變數需要存放的是一個整數,它的長度和 int 相同。

『陸』 enum在c語言中怎麼用 (枚舉型)

(3) 第一個枚舉成員的默認值為整型的0,後續枚舉成員的值在前一個成員上加1。 (4) 可以人為設定枚舉成員的值,從而自定義某個范圍內的整數。 (5) 枚舉型是預處理指令#define的替代。 (6) 類型定義以分號;結束。定義枚舉類型 enum YOURENUMTYPE{ID1,//如果不額外指定則第一個標識等於整數0,後續依次加1ID2, ID3=7, IDn//最後一個標識符後面沒有逗號 };//注意一定要加上這個分號定義枚舉變數 enum YOURENUMTYPE varname; 給枚舉變數賦值 varname = IDx;舉個完整的例子enum FRUIT{APPLE, PEAR, ORANGE, PEACH, GRAPE, BANANA};enmu FRUIT myfruit = PEACH; 1舉個例子: 學生 類分大學生 高中 初中小學生 你就可以這么做 enum student{colleage,high,middle,junior} //小明是個大學生 student xiaoming=colleage;//判斷小剛是不是高中生

『柒』 c語言枚舉用法

一、對枚舉型的變數賦值。

實例將枚舉類型的賦值與基本數據類型的賦值進行了對比:


方法1:先聲明變數,再對變數賦值

#include<stdio.h>
/*定義枚舉類型*/
enumDAY{MON=1,TUE,WED,THU,FRI,SAT,SUN};
voidmain()
{
/*使用基本數據類型聲明變數,然後對變數賦值*/
intx,y,z;
x=10;
y=20;
z=30;
/*使用枚舉類型聲明變數,再對枚舉型變數賦值*/
enumDAYyesterday,today,tomorrow;
yesterday=MON;
today=TUE;
tomorrow=WED;
printf("%d%d%d ",yesterday,today,tomorrow);
}


方法2:聲明變數的同時賦初值


#include<stdio.h>
/*定義枚舉類型*/
enumDAY{MON=1,TUE,WED,THU,FRI,SAT,SUN};
voidmain()
{
/*使用基本數據類型聲明變數同時對變數賦初值*/
intx=10,y=20,z=30;
/*使用枚舉類型聲明變數同時對枚舉型變數賦初值*/
enumDAYyesterday=MON,
today=TUE,
tomorrow=WED;
printf("%d%d%d ",yesterday,today,tomorrow);
}

方法3:定義類型的同時聲明變數,然後對變數賦值。

#include<stdio.h>
/*定義枚舉類型,同時聲明該類型的三個變數,它們都為全局變數*/
enumDAY{MON=1,TUE,WED,THU,FRI,SAT,SUN}yesterday,today,tomorrow;
/*定義三個具有基本數據類型的變數,它們都為全局變數*/
intx,y,z;
voidmain()
{
/*對基本數據類型的變數賦值*/
x=10;y=20;z=30;
/*對枚舉型的變數賦值*/
yesterday=MON;
today=TUE;
tomorrow=WED;
printf("%d%d%d ",x,y,z);//輸出:102030
printf("%d%d%d ",yesterday,today,tomorrow);//輸出:123
}

方法4:類型定義,變數聲明,賦初值同時進行。

#include<stdio.h>
/*定義枚舉類型,同時聲明該類型的三個變數,並賦初值。它們都為全局變數*/
enumDAY
{
MON=1,
TUE,
WED,
THU,
FRI,
SAT,
SUN
}
yesterday=MON,today=TUE,tomorrow=WED;
/*定義三個具有基本數據類型的變數,並賦初值。它們都為全局變數*/
intx=10,y=20,z=30;
voidmain()
{
printf("%d%d%d ",x,y,z);//輸出:102030
printf("%d%d%d ",yesterday,today,tomorrow);//輸出:123
}

2、對枚舉型的變數賦整數值時,需要進行類型轉換。

#include<stdio.h>
enumDAY{MON=1,TUE,WED,THU,FRI,SAT,SUN};
voidmain()
{
enumDAYyesterday,today,tomorrow;
yesterday=TUE;
today=(enumDAY)(yesterday+1);//類型轉換
tomorrow=(enumDAY)30;//類型轉換
//tomorrow=3;//錯誤
printf("%d%d%d ",yesterday,today,tomorrow);//輸出:2330
}

3、使用枚舉型變數

#include<stdio.h>
enum
{
BELL='a',
BACKSPACE='',
HTAB=' ',
RETURN=' ',
NEWLINE=' ',
VTAB='v',
SPACE=''
};
enumBOOLEAN{FALSE=0,TRUE}match_flag;
voidmain()
{
intindex=0;
intcount_of_letter=0;
intcount_of_space=0;
charstr[]="I'mElyefod";
match_flag=FALSE;
for(;str[index]!='';index++)
if(SPACE!=str[index])
count_of_letter++;
else
{
match_flag=(enumBOOLEAN)1;
count_of_space++;
}
printf("%s%dtimes%c",match_flag?"match":"notmatch",count_of_space,NEWLINE);
printf("countofletters:%d%c%c",count_of_letter,NEWLINE,RETURN);
}

『捌』 C語言枚舉類型怎麼用

枚舉類型定義時,定義的是可以枚舉的常量,常量符號的值在定義枚舉時已經初始化完成。
有沒有枚舉變數都不影響已經存在的可枚舉常量,
定義枚舉變數將來也是要賦值某一枚舉常量的。

比如:
WeekTypedef day=Monday;

『玖』 enum在c語言中怎麼用

11.10 枚舉類型
在實際問題中,有些變數的取值被限定在一個有限的范圍內。例如,一個星期內只有七天,一年只有十二個月,一個班每周有六門課程等等。如果把這些量說明為整型,字元型或其它類型顯然是不妥當的。為此,C語言提供了一種稱為「枚舉」的類型。在「枚舉」類型的定義中列舉出所有可能的取值,被說明為該「枚舉」類型的變數取值不能超過定義的范圍。應該說明的是,枚舉類型是一種基本數據類型,而不是一種構造類型,因為它不能再分解為任何基本類型。
11.10.1 枚舉類型的定義和枚舉變數的說明
1. 枚舉的定義枚舉類型定義的一般形式為:
enum 枚舉名{ 枚舉值表 };
在枚舉值表中應羅列出所有可用值。這些值也稱為枚舉元素。
例如:

該枚舉名為weekday,枚舉值共有7個,即一周中的七天。凡被說明為weekday類型變數的取值只能是七天中的某一天。
2. 枚舉變數的說明
如同結構和聯合一樣,枚舉變數也可用不同的方式說明,即先定義後說明,同時定義說明或直接說明。
設有變數a,b,c被說明為上述的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 枚舉類型變數的賦值和使用
枚舉類型在使用中有以下規定:
1. 枚舉值是常量,不是變數。不能在程序中用賦值語句再對它賦值。
例如對枚舉weekday的元素再作以下賦值:
sun=5;
mon=2;
sun=mon;
都是錯誤的。
2. 枚舉元素本身由系統定義了一個表示序號的數值,從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);
}

說明:
只能把枚舉值賦予枚舉變數,不能把元素的數值直接賦予枚舉變數。如:
a=sum;
b=mon;
是正確的。而:
a=0;
b=1;
是錯誤的。如一定要把數值賦予枚舉變數,則必須用強制類型轉換。
如:
a=(enum weekday)2;
其意義是將順序號為2的枚舉元素賦予枚舉變數a,相當於:
a=tue;
還應該說明的是枚舉元素不是字元常量也不是字元串常量,使用時不要加單、雙引號。
【例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");
}