C語言共用體與枚舉_第1頁
C語言共用體與枚舉_第2頁
C語言共用體與枚舉_第3頁
C語言共用體與枚舉_第4頁
C語言共用體與枚舉_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第第1212章章 共用體與枚舉類型共用體與枚舉類型2022-1-10C語言共用體與枚舉112.1 12.1 共用體類型與共用體變量共用體類型與共用體變量12.2 12.2 共用體變量的引用共用體變量的引用12.3 12.3 共用體變量的應(yīng)用共用體變量的應(yīng)用12.4 12.4 位運算與位段結(jié)構(gòu)位運算與位段結(jié)構(gòu)12.5 12.5 枚舉類型枚舉類型12.6 12.6 類型定義類型定義第第1212章章 共用體與枚舉類型共用體與枚舉類型2022-1-10C語言共用體與枚舉212.1 12.1 共用體類型與共用體變量共用體類型與共用體變量 共用體是由共用體是由用戶定義用戶定義的數(shù)據(jù)類型。的數(shù)據(jù)類型。 有時

2、需要使幾種不同類別的變量存放到同一段有時需要使幾種不同類別的變量存放到同一段內(nèi)存單元中內(nèi)存單元中, ,也就是使用也就是使用覆蓋覆蓋技術(shù),幾個變量互相覆技術(shù),幾個變量互相覆蓋。這種使幾個不同的變量共同占用一段內(nèi)存單元蓋。這種使幾個不同的變量共同占用一段內(nèi)存單元的結(jié)構(gòu),稱為的結(jié)構(gòu),稱為“共用體共用體”類型的結(jié)構(gòu)。類型的結(jié)構(gòu)。1 1. 共用體類型定義的一般形式共用體類型定義的一般形式共用體類型定義用關(guān)鍵字共用體類型定義用關(guān)鍵字union標(biāo)識,標(biāo)識, 形式為:形式為: union 標(biāo)識符標(biāo)識符 成員說明列表成員說明列表; 第第1212章章 共用體與枚舉類型共用體與枚舉類型2022-1-10C語言共用體

3、與枚舉3 標(biāo)識符給出共用體名,標(biāo)識符給出共用體名, 是共用體類型名的主體,是共用體類型名的主體, 定義的共用體類型由定義的共用體類型由“union 標(biāo)識符標(biāo)識符”標(biāo)識。標(biāo)識。2.共用體變量的定義共用體變量的定義 (1) 先定義共用體類型,先定義共用體類型, 再定義共用體變量:再定義共用體變量: union 共用體名共用體名 成員表成員表;union 共用體名共用體名 變量表;變量表;union data int i; char ch; float f;union data a,b,c;第第1212章章 共用體與枚舉類型共用體與枚舉類型2022-1-10C語言共用體與枚舉4(2) 定義共用體類型

4、的同時定義共用體變量定義共用體類型的同時定義共用體變量union 共用體名共用體名 成員表成員表 變量表;變量表;union data int i; char ch; float f;a,b,c;(3)定義共用體類型時,省略共用體類型名,同時定定義共用體類型時,省略共用體類型名,同時定義共用體類型變量義共用體類型變量unionunion 成員表成員表 變量表;變量表;union int i; char ch; float f;a,b,c;第第1212章章 共用體與枚舉類型共用體與枚舉類型2022-1-10C語言共用體與枚舉5注意區(qū)分:注意區(qū)分: “共用體共用體”變量:變量:各成員占相同的起始地

5、址,在內(nèi)各成員占相同的起始地址,在內(nèi)存中所占字節(jié)數(shù)度等于最長的成員在內(nèi)存中所占的字存中所占字節(jié)數(shù)度等于最長的成員在內(nèi)存中所占的字節(jié)數(shù)。節(jié)數(shù)。 “結(jié)構(gòu)體結(jié)構(gòu)體”變量:變量:各成員占不同的地址,在內(nèi)存中所各成員占不同的地址,在內(nèi)存中所占字節(jié)數(shù)等于全部成員在內(nèi)存中所占的字節(jié)數(shù)之和。占字節(jié)數(shù)等于全部成員在內(nèi)存中所占的字節(jié)數(shù)之和。union int i; char ch; float f; b;struct int i; char ch; float f;a;第第1212章章 共用體與枚舉類型共用體與枚舉類型2022-1-10C語言共用體與枚舉612.2 12.2 共用體變量的引用共用體變量的引用 共用

6、體變量不能直接使用,和結(jié)構(gòu)體變量一共用體變量不能直接使用,和結(jié)構(gòu)體變量一樣只能使用里面的某個成員,其成員同樣通過樣只能使用里面的某個成員,其成員同樣通過點點運算運算描述。形式為:描述。形式為: 共用體變量名共用體變量名. .成員名成員名 union int i; char ch; float f;a; 例如:左邊定義的共用體例如:左邊定義的共用體類型變量類型變量a a ,a a占有占有4 4個字節(jié)的個字節(jié)的空間,空間,a.i a.i 表示其整型成員,表示其整型成員,a.cha.ch表示其字符型成員,表示其字符型成員,a.fa.f表示其單精度型成員。表示其單精度型成員。 第第1212章章 共用體

7、與枚舉類型共用體與枚舉類型2022-1-10C語言共用體與枚舉7 說明:說明: (1) 共用體變量中,可以包含若干個成員及若干共用體變量中,可以包含若干個成員及若干種類型,但種類型,但共用體成員不能同時使用共用體成員不能同時使用。在每一時刻,。在每一時刻,只有一個成員及一種類型起作用,不能同時引用多只有一個成員及一種類型起作用,不能同時引用多個成員及多種類型。個成員及多種類型。 (2) 共用體變量中起作用的成員值是最后一次存共用體變量中起作用的成員值是最后一次存放的成員值放的成員值,因為共用體變量所有成員共同占用同,因為共用體變量所有成員共同占用同一段內(nèi)存單元,后來存放的值將原先存放的值覆蓋,

8、一段內(nèi)存單元,后來存放的值將原先存放的值覆蓋,故只能使用最后一次給定的成員值。如:故只能使用最后一次給定的成員值。如: a.i=278, a.ch=D, a.f=5.78;不能企圖通過下面的不能企圖通過下面的printf函數(shù)得到函數(shù)得到a.i和和a.ch的值:的值: printf(“%d,%c,%f”, a.i, a.ch, a.f);但能得到但能得到a.f的值。的值。第第1212章章 共用體與枚舉類型共用體與枚舉類型2022-1-10C語言共用體與枚舉8(3) 共用體變量的地址和它的各個成員的地址相同。共用體變量的地址和它的各個成員的地址相同。 (4) 不能企圖引用共用體變量名來得到某成員的

9、值。不能企圖引用共用體變量名來得到某成員的值。 (5) 共用體變量不能作函數(shù)參數(shù),函數(shù)的返回值也不共用體變量不能作函數(shù)參數(shù),函數(shù)的返回值也不能是共用體類型。能是共用體類型。 (6) 共用體類型和結(jié)構(gòu)體類型可以相互嵌套,共用體共用體類型和結(jié)構(gòu)體類型可以相互嵌套,共用體中成員可以為數(shù)組,甚至還可以定義共用體數(shù)組。中成員可以為數(shù)組,甚至還可以定義共用體數(shù)組。第第1212章章 共用體與枚舉類型共用體與枚舉類型2022-1-10C語言共用體與枚舉9例例12.1 寫出下列程序的執(zhí)行結(jié)果寫出下列程序的執(zhí)行結(jié)果main() union exx int a,b; struct int c,d;lpp; e=10

10、;e.b=e.a+20;e.lpp.c=e.a+e.b;e.lpp.d=e.a*e.b;printf(“%d,%dn”,e.lpp.c,e.lpp.d);程序運行結(jié)果如下:程序運行結(jié)果如下:60,360060,3600第第1212章章 共用體與枚舉類型共用體與枚舉類型2022-1-10C語言共用體與枚舉1012.3 12.3 共用體變量的應(yīng)用共用體變量的應(yīng)用 例例12.2 設(shè)有若干教師的數(shù)據(jù),包含有教師編號、姓名、設(shè)有若干教師的數(shù)據(jù),包含有教師編號、姓名、職稱,若職稱為講師,則描述他們的所講課程,若職職稱,若職稱為講師,則描述他們的所講課程,若職稱為教授,則描述他們所寫論文數(shù)目。稱為教授,則描

11、述他們所寫論文數(shù)目。 union cfchar clname10; /*所講課程所講課程*/int num; /*論文數(shù)目論文數(shù)目*/; struct teachers int no; /*編號編號*/ char name12; /*姓名姓名*/ char zc; /*職稱職稱*/ union cf x; /*可變字段,可變字段, 為所講課程或論文數(shù)目為所講課程或論文數(shù)目*/ teach3;第第1212章章 共用體與枚舉類型共用體與枚舉類型2022-1-10C語言共用體與枚舉11#define format %d %s %c main( )int i; for(i=0; i3; i+) sca

12、nf(format,&teachi.no,, &teachi.zc); if ( teachi.zc= =L) scanf(”%s”, teachi.x .clname);); else if (teachi.zc= =P) scanf (”%d”, &teachi.x .num);); else printf (”input data errorn”);); 第第1212章章 共用體與枚舉類型共用體與枚舉類型2022-1-10C語言共用體與枚舉12for(i=0; i3; i+) printf ( %d %s %c , teachi.no,tea

13、,teachi.zc);); if (teachi.zc= =L) printf (”%sn”, teachi.x.clname);); else if ( teachi. zc= = P ) printf (%dn, teachi.x. num); else printf(data errorn);); 第第1212章章 共用體與枚舉類型共用體與枚舉類型2022-1-10C語言共用體與枚舉1312.4 12.4 位運算與位段結(jié)構(gòu)位運算與位段結(jié)構(gòu) 為了節(jié)省內(nèi)存空間,在系統(tǒng)軟件中常將多個標(biāo)為了節(jié)省內(nèi)存空間,在系統(tǒng)軟件中常將多個標(biāo)志狀態(tài)簡單地組合在一起,存儲到一個字節(jié)(或字)志狀態(tài)

14、簡單地組合在一起,存儲到一個字節(jié)(或字)中。語言是為研制系統(tǒng)軟件而設(shè)計的,所以它提中。語言是為研制系統(tǒng)軟件而設(shè)計的,所以它提供了實現(xiàn)將標(biāo)志狀態(tài)從標(biāo)志字節(jié)中分離出來的位運供了實現(xiàn)將標(biāo)志狀態(tài)從標(biāo)志字節(jié)中分離出來的位運算功能。算功能。 所謂位運算是指,按二進(jìn)制位進(jìn)行的運算。所謂位運算是指,按二進(jìn)制位進(jìn)行的運算。在用在用位運算符進(jìn)行數(shù)的運算時,數(shù)是以位運算符進(jìn)行數(shù)的運算時,數(shù)是以補碼補碼的形式參加的形式參加運算的。運算的。12.4.1 12.4.1 位運算及其運算符位運算及其運算符第第1212章章 共用體與枚舉類型共用體與枚舉類型2022-1-10C語言共用體與枚舉141按位與按位與& (1)

15、格式:格式:x&y (2)規(guī)則:對應(yīng)位均為規(guī)則:對應(yīng)位均為1時才為時才為1,否則為,否則為0:例如,例如,3&9=1: 0011 & 1001 0001=1 (3)主要用途:取主要用途:取(或保留或保留)1個數(shù)的某個數(shù)的某(些些)位,其余各位,其余各位置位置0。 2按位或按位或| (1)格式:格式:x|y (2)規(guī)則:對應(yīng)位均為規(guī)則:對應(yīng)位均為0時才為時才為0,否則為,否則為1: 第第1212章章 共用體與枚舉類型共用體與枚舉類型2022-1-10C語言共用體與枚舉15例如,例如,3|9=11: 0011 | 1001 1011=11 (3)主要用途:將主要用途:將1個

16、數(shù)的某個數(shù)的某(些些)位置位置1,其余各位,其余各位不變。不變。3按位異或按位異或(1)格式:格式:xy(2)規(guī)則:對應(yīng)位相同時為規(guī)則:對應(yīng)位相同時為0,不同時為,不同時為1:39=10。(3)主要用途:使主要用途:使1個數(shù)的某個數(shù)的某(些些)位翻轉(zhuǎn)位翻轉(zhuǎn)(即原來為即原來為1的的位變?yōu)槲蛔優(yōu)?,為,為0的變?yōu)榈淖優(yōu)?),其余各位不變。,其余各位不變。第第1212章章 共用體與枚舉類型共用體與枚舉類型2022-1-10C語言共用體與枚舉164按位取反按位取反(1)格式:格式:x(2)規(guī)則:各位翻轉(zhuǎn),即原來為規(guī)則:各位翻轉(zhuǎn),即原來為1的位變成的位變成0,原來,原來為為0的位變成的位變成1:例如,直

17、接構(gòu)造一個全:例如,直接構(gòu)造一個全1的數(shù),在的數(shù),在IBM-PC機中為機中為0 xffff(2字節(jié)),而在字節(jié)),而在VAX-11/780上,上,卻是卻是0 xffffffff(4字節(jié))。如果用字節(jié))。如果用0來構(gòu)造,系統(tǒng)可以來構(gòu)造,系統(tǒng)可以自動適應(yīng)。自動適應(yīng)。5按位左移按位左移(1)格式:格式:x 位數(shù)位數(shù)(2)規(guī)則:使操作數(shù)的各位左移,低位補規(guī)則:使操作數(shù)的各位左移,低位補0,高位溢,高位溢出:出:5(1)格式:格式:x位數(shù)位數(shù)(2)規(guī)則:使操作數(shù)的各位右移,移出的低位舍棄;規(guī)則:使操作數(shù)的各位右移,移出的低位舍棄;高位:高位:1)對無符號數(shù)和有符號中的正數(shù),補對無符號數(shù)和有符號中的正數(shù),

18、補0;2)有符號數(shù)中的負(fù)數(shù),取決于所使用的系統(tǒng):補有符號數(shù)中的負(fù)數(shù),取決于所使用的系統(tǒng):補0的稱為的稱為“邏輯右移邏輯右移”,補,補1的稱為的稱為“算術(shù)右移算術(shù)右移”。例如,。例如,20 2=5。第第1212章章 共用體與枚舉類型共用體與枚舉類型2022-1-10C語言共用體與枚舉18說明說明:(1)x、y和和“位數(shù)位數(shù)”等操作數(shù),都只能是整型或等操作數(shù),都只能是整型或字符型數(shù)據(jù)。除按位取反為單目運算符外,其余均為字符型數(shù)據(jù)。除按位取反為單目運算符外,其余均為雙目運算符。雙目運算符。(2)參與運算時,操作數(shù))參與運算時,操作數(shù)x和和y,都必須首先轉(zhuǎn)換,都必須首先轉(zhuǎn)換成二進(jìn)制形式,然后再執(zhí)行相應(yīng)

19、的按位運算。成二進(jìn)制形式,然后再執(zhí)行相應(yīng)的按位運算。例如,例如,5 2=5:10100 00101。第第1212章章 共用體與枚舉類型共用體與枚舉類型2022-1-10C語言共用體與枚舉1912.4.2 位運算舉例位運算舉例 例例12.3 從鍵盤上輸入從鍵盤上輸入1個正整數(shù)給個正整數(shù)給int變量變量num,輸出,輸出由由811位構(gòu)成的數(shù)(從低位、位構(gòu)成的數(shù)(從低位、0號開始編號)。號開始編號)?;舅悸罚夯舅悸罚海?)使變量)使變量num右移右移8位,將位,將811位移到低位移到低4位上。位上。(2)構(gòu)造)構(gòu)造1個低個低4位為位為1、其余各位為、其余各位為0的整數(shù)。的整數(shù)。(3)與)與num

20、進(jìn)行按位與運算。進(jìn)行按位與運算。main() int num, mask; printf(Input a integer number: ); scanf(%d,&num); num=8; mask = ( 0 4); printf(result=0 x%xn, num & mask); 第第1212章章 共用體與枚舉類型共用體與枚舉類型2022-1-10C語言共用體與枚舉20說明說明:(1)(1)復(fù)合賦值位運算符復(fù)合賦值位運算符 除按位取反運算外,其余除按位取反運算外,其余5 5個位運算符均可個位運算符均可與賦值運算符一起,構(gòu)成復(fù)合賦值位運算符:與賦值運算符一起,構(gòu)成復(fù)合賦值

21、位運算符: &=&=、|=|=、=、=(2)(2)不同長度數(shù)據(jù)間的位運算不同長度數(shù)據(jù)間的位運算低字節(jié)對齊,低字節(jié)對齊,短數(shù)的短數(shù)的 高字節(jié)按最高位補齊:高字節(jié)按最高位補齊: 對無符號數(shù)和有符號中的正數(shù),補對無符號數(shù)和有符號中的正數(shù),補0 0; 有符號數(shù)中的負(fù)數(shù),補有符號數(shù)中的負(fù)數(shù),補1 1。第第1212章章 共用體與枚舉類型共用體與枚舉類型2022-1-10C語言共用體與枚舉2112.4.3 位段結(jié)構(gòu)位段結(jié)構(gòu) 有時,存儲有時,存儲1個信息不必占用個信息不必占用1個字節(jié),只需二進(jìn)個字節(jié),只需二進(jìn)制的制的1個或多個位就夠用。如果仍然使用結(jié)構(gòu)類型,則個或多個位就夠用。如果仍然使用結(jié)構(gòu)

22、類型,則造成內(nèi)存空間的浪費。為此,造成內(nèi)存空間的浪費。為此,C語言引入了位段類型。語言引入了位段類型。 1. 位段的概念與定義位段的概念與定義 所謂位段類型,是一種特殊的結(jié)構(gòu)類型,其所有所謂位段類型,是一種特殊的結(jié)構(gòu)類型,其所有成員均以二進(jìn)制位為單位定義長度,并稱成員為位段。成員均以二進(jìn)制位為單位定義長度,并稱成員為位段。位段結(jié)構(gòu)中位段的定義格式為:位段結(jié)構(gòu)中位段的定義格式為: unsigned :例如,例如,CPU的狀態(tài)寄存器,按位段類型定義如下:的狀態(tài)寄存器,按位段類型定義如下:第第1212章章 共用體與枚舉類型共用體與枚舉類型2022-1-10C語言共用體與枚舉22struct stat

23、us unsigned sign: 1; /*符號標(biāo)志符號標(biāo)志*/ unsigned zero: 1; /*零標(biāo)志零標(biāo)志*/ unsigned carry: 1; /*進(jìn)位標(biāo)志進(jìn)位標(biāo)志*/ unsigned parity: 1; /*奇偶奇偶/溢出標(biāo)志溢出標(biāo)志*/ unsigned half_carry: 1; /*半進(jìn)位標(biāo)志半進(jìn)位標(biāo)志*/ unsigned negative: 1; /*減標(biāo)志減標(biāo)志*/ flags;顯然,對顯然,對CPU的狀態(tài)寄存器而言,使用位段類型的狀態(tài)寄存器而言,使用位段類型(僅需(僅需1個字節(jié)),比使用結(jié)構(gòu)類型(需要個字節(jié)),比使用結(jié)構(gòu)類型(需要6個字節(jié))個字節(jié))節(jié)省

24、了節(jié)省了5個字節(jié)。個字節(jié)。第第1212章章 共用體與枚舉類型共用體與枚舉類型2022-1-10C語言共用體與枚舉232.說明說明(1)因為位段類型是一種結(jié)構(gòu)類型,所以位段類型)因為位段類型是一種結(jié)構(gòu)類型,所以位段類型和位段變量的定義,以及對位段(即位段類型中的成和位段變量的定義,以及對位段(即位段類型中的成員)的引用,均與結(jié)構(gòu)類型和結(jié)構(gòu)變量一樣。員)的引用,均與結(jié)構(gòu)類型和結(jié)構(gòu)變量一樣。(2)對位段賦值時,要注意取置范圍。一般地說,)對位段賦值時,要注意取置范圍。一般地說,長度為長度為n的位段,其取值范圍是:的位段,其取值范圍是:0(2n-1)。)。(3)可以用)可以用%d、%x、%u和和%o等

25、格式字符,以整等格式字符,以整數(shù)形式輸出位段。數(shù)形式輸出位段。(4)在數(shù)值表達(dá)式中引用位段時,系統(tǒng)自動將位段)在數(shù)值表達(dá)式中引用位段時,系統(tǒng)自動將位段轉(zhuǎn)換為整型數(shù)。轉(zhuǎn)換為整型數(shù)。第第1212章章 共用體與枚舉類型共用體與枚舉類型2022-1-10C語言共用體與枚舉2412.5 12.5 枚舉類型枚舉類型 如果一個變量只有幾種可能的值,可以定義為枚如果一個變量只有幾種可能的值,可以定義為枚舉類型。舉類型。 “枚舉枚舉”:將變量可能的值一一列舉出來。變量:將變量可能的值一一列舉出來。變量的值只能取列舉出來的值之一。的值只能取列舉出來的值之一。枚舉類型的定義枚舉類型的定義 枚舉類型定義用關(guān)鍵字枚舉類

26、型定義用關(guān)鍵字enum標(biāo)識,形式為:標(biāo)識,形式為: enum 枚舉名枚舉名標(biāo)識符標(biāo)識符=整常數(shù)整常數(shù), 枚舉變枚舉變量名量名; 枚舉元素(非一般意義上的常量,也不是變量,枚舉元素(非一般意義上的常量,也不是變量,而只是一個符號)而只是一個符號), ,只能是標(biāo)識符,而不能是字符常只能是標(biāo)識符,而不能是字符常量或符號常量,量或符號常量,標(biāo)識符代表什么含義,完全由程序員標(biāo)識符代表什么含義,完全由程序員決定決定。數(shù)據(jù)枚舉的順序規(guī)定了枚舉數(shù)據(jù)的序號,從。數(shù)據(jù)枚舉的順序規(guī)定了枚舉數(shù)據(jù)的序號,從0開始,依次遞增。開始,依次遞增。 第第1212章章 共用體與枚舉類型共用體與枚舉類型2022-1-10C語言共用

27、體與枚舉25(1) 定義枚舉類型定義枚舉類型status, 包含復(fù)制與刪除兩種狀態(tài):包含復(fù)制與刪除兩種狀態(tài): enum statuscopy, delete; 枚舉類型枚舉類型status僅有兩個數(shù)據(jù),一個是僅有兩個數(shù)據(jù),一個是copy,一個,一個是是delete, 序號為序號為0、 1, 代表復(fù)制與刪除。代表復(fù)制與刪除。(2) 定義枚舉類型定義枚舉類型color,包含紅、黃、藍(lán)、白、黑五,包含紅、黃、藍(lán)、白、黑五種顏色:種顏色: enum color red, yellow, blue, white, black; 枚舉類型枚舉類型color有有red、 yellow、 blue、 whit

28、e、 black五個數(shù)據(jù),五個數(shù)據(jù), 序號為序號為0、 1、 2、 3、 4, 代表紅、代表紅、 黃、黃、 藍(lán)、藍(lán)、 白、白、 黑五種顏色。黑五種顏色。 在定義枚舉類型時,在定義枚舉類型時,程序員可在枚舉數(shù)據(jù)時通過程序員可在枚舉數(shù)據(jù)時通過“=”號自己規(guī)定序號號自己規(guī)定序號,并影響后面的枚舉數(shù)據(jù)的序號,并影響后面的枚舉數(shù)據(jù)的序號,后繼序號以此遞增。例如后繼序號以此遞增。例如:enum statucopy=6, delete;則;則copy的序號為的序號為6, delete的序號為的序號為7。第第1212章章 共用體與枚舉類型共用體與枚舉類型2022-1-10C語言共用體與枚舉262. 枚舉類型變

29、量的定義枚舉類型變量的定義 (1) 先定義枚舉類型,先定義枚舉類型, 再定義枚舉類型變量:再定義枚舉類型變量: enum 標(biāo)識符標(biāo)識符 枚舉數(shù)據(jù)表枚舉數(shù)據(jù)表; enum 標(biāo)識符標(biāo)識符 變量表;變量表; 例如例如: enum color red,yellow, blue, white, black; enum color c1, c2;(2) 在定義枚舉類型的同時定義枚舉類型變量:在定義枚舉類型的同時定義枚舉類型變量: enum 標(biāo)識符標(biāo)識符 枚舉數(shù)據(jù)表枚舉數(shù)據(jù)表 變量表;變量表;例如例如: enum color red,yellow,blue,white,black c1, c2; 第第121

30、2章章 共用體與枚舉類型共用體與枚舉類型2022-1-10C語言共用體與枚舉27 (3) 直接定義枚舉類型變量:直接定義枚舉類型變量: enum 枚舉數(shù)據(jù)表枚舉數(shù)據(jù)表 變量表;變量表; enum red,yellow, blue,white, black c1, c2; 說明:說明: (1)枚舉元素是常量枚舉元素是常量,不是變量。不是變量。在中按定義的順序在中按定義的順序取值取值0、1、. 例例:c1 = yellow; printf(%d, c1); 輸出整數(shù)輸出整數(shù)1。 (2)枚舉類型變量可以進(jìn)行賦值運算。枚舉類型是有枚舉類型變量可以進(jìn)行賦值運算。枚舉類型是有序類型,序類型, 枚舉類型數(shù)據(jù)

31、還可以進(jìn)行關(guān)系運算。枚舉類枚舉類型數(shù)據(jù)還可以進(jìn)行關(guān)系運算。枚舉類型數(shù)據(jù)的比較轉(zhuǎn)化成對序號進(jìn)行比較,型數(shù)據(jù)的比較轉(zhuǎn)化成對序號進(jìn)行比較, 只有同一種枚只有同一種枚舉類型的數(shù)據(jù)才能進(jìn)行比較。舉類型的數(shù)據(jù)才能進(jìn)行比較。 如:如:if(c1=c2) printf(“n%s”,”The color is same”); if(c1=red) printf(“n%s”,”red”);第第1212章章 共用體與枚舉類型共用體與枚舉類型2022-1-10C語言共用體與枚舉2812.6 類型定義類型定義 除了可以直接使用除了可以直接使用C C提供的標(biāo)準(zhǔn)類型名(如提供的標(biāo)準(zhǔn)類型名(如int,char,float)i

32、nt,char,float)和自己聲明的結(jié)構(gòu)體、共用體、指和自己聲明的結(jié)構(gòu)體、共用體、指針、枚舉類型外,還可以用針、枚舉類型外,還可以用typedeftypedef聲明聲明新的類型名新的類型名來代替已有的類型名來代替已有的類型名。如:。如: (1)typedef int integer;(1)typedef int integer; 指定用指定用integerinteger代替代替intint類型,這樣類型,這樣integer j,k;integer j,k;等價于等價于 int j,k;int j,k;(2)typedef int arr5;(2)typedef int arr5; 指定用指定用arr代替一個包含代替一個包含5個整數(shù)的整型數(shù)組,這個整數(shù)的整型數(shù)組,這樣樣arr a,b;等價于等價于int a5,b5; 第第1212章章 共用體與枚舉類型共用體與枚舉類型2022-1-10C語言共用體與枚舉29(3)typedef struct node long num; char name10; struct node *next;node,*link; 指定用指定用nodenode代替上述結(jié)構(gòu)體類型,用代替上述結(jié)構(gòu)體類型,用li

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論