枚舉c語言
A. c語言枚舉類型enum用法
c語言枚舉類型enum用法如下:
(1) 枚舉型是一個集合,集合中的元素(枚舉成員)是一些命名的整型常量,元素之間用逗號,隔開。
(2)DAY是一個標識符,可以看成這個集合的名字,是一個可選項,即是可有可無的項。
(3) 第一個枚舉成員的默認值為整型的0,後續枚舉成員的值在前一個成員上加1。在當前值沒有賦值的情況下,枚舉類型的當前值總是前一個值+1.
(4) 可以人為設定枚舉成員的值,從而自定義某個范圍內的整數。
(5) 枚舉型是預處理指令#define的替代。
(6) 類型定義以分號;結束。
typeName是枚舉類型的名字,花括弧裡面的元素(枚舉成員)是常量而不是變數,這個一定要搞清楚,因為枚舉成員的是常量,所以不能對它們賦值,只能將它們的值賦給其他的變數。
枚舉是 C 語言中的一種基本數據類型,它可以讓數據更簡潔,更易讀。
B. C語言枚舉類型是什麼意思
枚舉類型C語言或C++的一種構造類型,它用於聲明一組命名的常數。 x0dx0a(1)枚舉的聲明:枚舉聲明用於聲明新的枚舉類型。 x0dx0a訪問修辭符 enum 枚舉名:基礎類型 x0dx0a{ x0dx0a枚舉成員 x0dx0a} ;x0dx0a基礎類型必須能夠表示該枚舉中定義的所有枚舉數值。枚舉聲明可以顯式地聲明 byte、sbyte、short、ushort、int、uint、long 或 ulong 類型作為對應的基礎類型。沒有顯式地聲明基礎類型的枚舉聲明意味著所對應的基礎類型是 int。 x0dx0a(2)枚舉成員 x0dx0a枚舉成員是該枚舉類型的命名常數。任意兩個枚舉成員不能具有相同的名稱。每個枚舉成員均具有相關聯的常數值。此值的類型就是枚舉的基礎類型。每個枚舉成員的常數值必須在該枚舉的基礎類型的范圍之內。 x0dx0a示例: x0dx0apublic enum TimeofDay:uint x0dx0a{ x0dx0aMorning=-3, x0dx0aAfternoon=-2, x0dx0aEvening=-1 x0dx0a} ;x0dx0a產生編譯時錯誤,原因是常數值 -1、-2 和 _3 不在基礎整型 uint 的范圍內。 x0dx0a(3)枚舉成員默認值 x0dx0a在枚舉類型中聲明的第一個枚舉成員它的默值為零。 x0dx0a以後的枚舉成員值是將前一個枚舉成員(按照文本順序)的值加 1 得到的。這樣增加後的值必須在該基礎類型可表示的值的范圍內;否則,會出現編譯時錯誤。 x0dx0a示例: x0dx0apublic enum TimeofDay:uint x0dx0a{ x0dx0aMorning, x0dx0aAfternoon, x0dx0aEvening x0dx0a} ;x0dx0aMorning的值為0,Afternoon的值為1,Evening的值為2。 x0dx0a(4)為枚舉成員顯示賦值 x0dx0a允許多個枚舉成員有相同的值. x0dx0a沒有顯示賦值的枚舉成員的值,總是前一個枚舉成員的值+1. x0dx0a示例 x0dx0apublic enum Number x0dx0a{ x0dx0aa=1, x0dx0ab, x0dx0ac=1, x0dx0ad x0dx0a} ;x0dx0ab的值為2,d的值為2. x0dx0a注意:以上枚舉值都不能超過它的基礎類型範圍。否則會報錯. x0dx0a(5)枚舉類型與基礎類型的轉換 x0dx0a基礎類型不能隱式轉換為枚舉類型 x0dx0a枚舉類型也不能隱式轉換為基礎類型 x0dx0a示例: x0dx0apublic enum Number x0dx0a{ x0dx0aa, x0dx0ab, x0dx0ac, x0dx0ad x0dx0a} ;x0dx0aclass Test x0dx0a{ x0dx0apublic static void Main() x0dx0a{ x0dx0aint i=Number.a;//錯誤,要強制類型轉換(int)Number.a x0dx0aNumber n; x0dx0an=2 //錯誤,要強制類型轉換(Number)2 x0dx0a} x0dx0a} x0dx0a(6)System.Enum類型 x0dx0aSystem.Enum 類型是所有枚舉類型的抽象基類,並且從 System.Enum 繼承的成員在任何枚舉類型中都可用。 x0dx0aSystem.Enum 本身不是枚舉類型。相反,它是一個類類型,所有枚舉類型都是從它派生的。 x0dx0aSystem.Enum 從類型 System.ValueType派生 x0dx0a(7)使用枚舉類型 x0dx0ausing System; x0dx0apublic enum TimeofDay x0dx0a{ x0dx0aMorning, x0dx0aAfternoon, x0dx0aEvening x0dx0a} ;x0dx0aclass Test x0dx0a{ x0dx0astatic void WriteGreeting(TimeofDay timeofDay) x0dx0a{ x0dx0aswitch(timeofDay) x0dx0a{ x0dx0acase TimeofDay.Morning: x0dx0aConsole.WriteLine("good morning"); x0dx0abreak; x0dx0acase TimeofDay.Afternoon: x0dx0aConsole.WriteLine("good afternoon"); x0dx0abreak; x0dx0acase TimeofDay.Evening: x0dx0aConsole.WriteLine("good evening"); x0dx0abreak; x0dx0a} x0dx0a} x0dx0astatic void Main() x0dx0a{ x0dx0aWriteGreeting(TimeofDay.Morning); x0dx0aWriteGreeting(TimeofDay.Evening); x0dx0aWriteGreeting(TimeofDay.Afternoon); x0dx0a} x0dx0a}
C. C語言枚舉類型是什麼意思
就是你聲明的這個枚舉變數的值,只能取其中的東西,比如:enum {Monday,Tuesday,Wednesday,Thursday,Friday} weekday;那weekday這個變臉的值只能是{}中的值。(他們分別對應數字0,1,2,3,4,因為枚舉型變數也是整型)
D. enum在c語言中是什麼意思
enum是計算機編程語言中的一種數據類型。枚舉類型:在實際問題中,有些變數的取值被限定在一個有限的范圍內。
C語言提供了一種稱為「枚舉」的類型。在「枚舉」類型的定義中列舉出所有可能的取值,被說明為該「枚舉」類型的變數取值不能超過定義的范圍。
例如,一個星期內只有七天,一年只有十二個月,一個班每周有六門課程等。如果把這些量說明為整型,字元型或其它類型顯然是不妥當的。
數據類型關鍵字
short:修飾int,短整型數據,可省略被修飾的int。(K&R時期引入)
long:修飾int,長整型數據,可省略被修飾的int。(K&R時期引入)
long long:修飾int,超長整型數據,可省略被修飾的int。(C99標准新增)
signed:修飾整型數據,有符號數據類型。(C89標准新增)
unsigned:修飾整型數據,無符號數據類型。(K&R時期引入)
restrict:用於限定和約束指針,並表明指針是訪問一個數據對象的初始且唯一的方式。(C99標准新增)
E. 誰能給我講講C語言中的枚舉是什麼意思啊!
枚舉類型可以理解為一個集合,枚舉成員是集合內的一些帶有名字的整型常量,成員之間用逗號隔開。枚舉的名字可有可無,只是一個標識。枚舉中,
第一個枚舉成員默認值為整型的0,後續枚舉成員的值在前一個成員上加1。當然也可以人為設定枚舉成員的初始值。例如enum
person
{
man,
women};
enum
person
{
man=1,
women};
通常用枚舉來列舉一些有限數量的變數,也就是可列舉的變數,例如一周七天,就可以用枚舉實現。
F. C語言中的枚舉類型
如果一個變數只有幾種可能的值,則可以定義為 枚舉類型 。所謂「枚舉」是指將變數的值一一列舉出來,變數的值只限於列舉出來的值的范圍內。
聲明枚舉類型用 enum 開頭。例如:
聲明了一個枚舉類型enum weekday,則可以用此類型來定義變數。例如:
也可以直接定義枚舉變數,例如:
其中sun、mon、…、sat稱為 枚舉元素 或 枚舉常量 。
說明:
1、在C編譯中,對枚舉元素按常量處理,故稱為 枚舉常量 。它們不是變數,不能進行賦值。例如 sun = 7; mon = 1; 是錯誤的。
2、枚舉元素作為常量,是有值的。C語言編譯按定義時的順序使它們的值為0、1、2……也可以在定義時,指定枚舉元素的值,例如:
3、枚舉值可以用來作判斷比較。例如:
4、一個證書不能直接賦值給一個枚舉變數。例如 workday=1; 是錯誤的。它們屬於不同的類型。應該先進性強制類型轉換,然後才能賦值。例如:
相當於將序號為2的枚舉元素賦值給workday,相當於
G. C語言枚舉類型怎麼用
枚舉類型定義時,定義的是可以枚舉的常量,常量符號的值在定義枚舉時已經初始化完成。
有沒有枚舉變數都不影響已經存在的可枚舉常量,
定義枚舉變數將來也是要賦值某一枚舉常量的。
比如:
WeekTypedef day=Monday;
H. C語言的枚舉類型知識
導語:定義一個變數是枚舉類型,可以先定義一個枚舉類型名,然後再說明這個變數是該枚舉類型。下面是C語言的枚舉類型知識,歡迎閱讀:
在實際應用中,有的變數只有幾種可能取值。如人的性別只有兩種可能取值,星期只有七種可能取值。在 C 語言中對這樣取值比較特殊的變數可以定義為枚舉類型。所謂枚舉是指將變數的值一一列舉出來,變數只限於列舉出來的值的范圍內取值。
例如:
enum weekday{sun,mon,tue,wed,thu,fri,sat};
定義了一個枚舉類型名 enum weekday,然後定義變數為該枚舉類型。例如:
enum weekday day;
當然,也可以直接定義枚舉類型變數。例如:
enum weekday{sun,mon,tue,wed,thu,fri,sat} day;
其中,sum,mon,…,sat 等稱為枚舉元素或枚舉常量,它們是用戶定義的標識符。
需要說明的有以下幾點。
① 枚舉元素不是變數,而是常數,因此枚舉元素又稱為枚舉常量。因為是常量,所以不能對枚舉元素進行賦值。
② 枚舉元素作為常量,它們是有值的,C 語言在編譯時按定義的順序使它們的值為,1,2,…。
在上面的說明中,sun 的值為 0,mon 的值為 1,…sat 的.值為 6,如果有賦值語句
day=mon;
則 day 變數的值為 1。當然,這個變數值是可以輸出的。例如:
printf ("%d",day);
將輸出整數 1。
如果在定義枚舉類型時指定元素的值,也可以改變枚舉元素的值。例如:
enum weekday{sun=7,mon=1,tue,wed,thu,fri,sat}day;
這時,sun 為 7,mon 為 1,以後元素順次加 1,所以 sat 就是 6 了。
③ 枚舉值可以用來作判斷。例如:
if (day==mon) {…}
if (day>mon) {…}
枚舉值的比較規則是:按其在說明時的順序號比較,如果說明時沒有人為指定,則第一個枚舉元素的值認作 0。例如,mon>sun,sat>fri。
C 語言教程 ?216?
④ 一個整數不能直接賦給一個枚舉變數,必須強制進行類型轉換才能賦值。例如:
day=(enum weekday)2;
這個賦值的意思是,將順序號為 2 的枚舉元素賦給 day,相當於workday=tue;
【例 11.6】從鍵盤輸入一個整數,顯示與該整數對應的枚舉常量的英文名稱。
# include
void main( )
{
enum weekday {sun,mon,tue,wed,thu,fri,sat} day;
int k;
printf("input a number(0--6)");
scanf("%d",&k);
day=(enum weekday)k;
switch(day)
{
case sun: printf("sunday/n");break;
case mon: printf("monday/n");break;
case tue: printf("tuesday/n");break;
case wed: printf("wednesday/n");break;
case thu: printf("thursday/n");break;
case fri: printf("friday/n");break;
case sat: printf("satday/n");break;
default: printf("input error/n");break;
}
}
程序運行結果為:
input a number(0--6)1
monday
在該程序中,枚舉常量與枚舉變數可以進行比較,但要輸出枚舉常量對應的英文單詞,不能使用以下語句:
printf(" %s",mon);
因為枚舉常量 mon 為整數值,而非字元串。
在使用枚舉變數時,主要關心的不是它的值的大小,而是其表示的狀態。
註:以下全部代碼的執行環境為VC++ 6.0
在程序中,可能需要為某些整數定義一個別名,我們可以利用預處理指令#define來完成這項工作,您的代碼可能是:
#define MON 1
#define TUE 2
#define WED 3
#define THU 4
#define FRI 5
#define SAT 6
#define SUN 7
在此,我們定義一種新的數據類型,希望它能完成同樣的工作。這種新的數據類型叫枚舉型。
1. 定義一種新的數據類型 - 枚舉型
以下代碼定義了這種新的數據類型 - 枚舉型
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
};
(1) 枚舉型是一個集合,集合中的元素(枚舉成員)是一些命名的整型常量,元素之間用逗號,隔開。
(2) DAY是一個標識符,可以看成這個集合的名字,是一個可選項,即是可有可無的項。
(3) 第一個枚舉成員的默認值為整型的0,後續枚舉成員的值在前一個成員上加1。
(4) 可以人為設定枚舉成員的值,從而自定義某個范圍內的整數。
(5) 枚舉型是預處理指令#define的替代。
(6) 類型定義以分號;結束。
2. 使用枚舉類型對變數進行聲明
新的數據類型定義完成後,它就可以使用了。我們已經見過最基本的數據類型,如:整型int, 單精度浮點型float, 雙精度浮點型double, 字元型char, 短整型short等等。用這些基本數據類型聲明變數通常是這樣:
char a; //變數a的類型均為字元型char
char letter;
int x,
y,
z; //變數x,y和z的類型均為整型int
int number;
double m, n;
double result; //變數result的類型為雙精度浮點型double
既然枚舉也是一種數據類型,那麼它和基本數據類型一樣也可以對變數進行聲明。
方法一:枚舉類型的定義和變數的聲明分開
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
};
enum DAY yesterday;
enum DAY today;
enum DAY tomorrow; //變數 tomorrow的類型為枚舉型enum DAY
enum DAY good_day, bad_day; //變數good_day和bad_day的類型均為枚舉型enum DAY
方法二:類型定義與變數聲明同時進行:
enum //跟第一個定義不同的是,此處的標號DAY省略,這是允許的。
{
saturday,
sunday = 0,
monday,
tuesday,
wednesday,
thursday,
friday
} workday; //變數workday的類型為枚舉型enum DAY
enum week { Mon=1, Tue, Wed, Thu, Fri Sat, Sun} days; //變數days的類型為枚舉型enum week
enum BOOLEAN { false, true } end_flag, match_flag; //定義枚舉類型並聲明了兩個枚舉型變數
方法三:用typedef關鍵字將枚舉類型定義成別名,並利用該別名進行變數聲明:
typedef enum workday
{
saturday,
sunday = 0,
monday,
tuesday,
wednesday,
thursday,
friday
} workday; //此處的workday為枚舉型enum workday的別名
workday today, tomorrow; //變數today和tomorrow的類型為枚舉型workday,也即enum workday
enum workday中的workday可以省略:
typedef enum
{
saturday,
sunday = 0,
monday,
tuesday,
wednesday,
thursday,
friday
} workday; //此處的workday為枚舉型enum workday的別名
workday today, tomorrow; //變數today和tomorrow的類型為枚舉型workday,也即 enum workday。
I. C語言結構、聯合和枚舉(struct、union、enum)
@[TOC]
結構:具有不同數據類型的值(成員)的集合。
聯合跟結構很類似,不同在於聯合的成員共享同一存儲空間。
結構成員通過名字而不是位置訪問(與數組的區別)
指定初始化:不需要與結構成員的順序一致
結構的賦值: part2 = part1 ,直接賦值(與數組不同)
不能用==和!=判斷結構是否相等
命名結構時,兩種寫法都可以,但是 結構用於鏈表時,必須使用結構標記。
結構裡面也允許嵌套結構。
編譯器只為最大的成員分配足夠的內存空間
結構變數的成員存儲在 不同 的內存地址中,聯合的成員存儲在 同一 內存地址中。
聯合的作用:用聯合來節省空間
構造混合的數據結構
每次對聯合的成員賦值,都由程序負責改變標記欄位的內容
許多程序中,我們只具有少量有意義的值。
我們為這種具有少量可能值的變數提供了一種專用類型——枚舉。
區別:枚舉常量的名字必須不同於 作用於范圍內 聲明的其他標識符。
枚舉常量遵循C語言的作用域規則:如果枚舉聲明在函數體內,那麼它的常量對外部函數來說是不可見的。
默認情況下,編譯器會把整數0,1,2……賦值給特定枚舉中的變數
如果想要指定變數的值,可以在聲明時指定。
當沒有為枚舉常量指定值時,它的值比前面一個值大1.
C語言允許把枚舉常量和普通整數混合。