?? 王大剛--c語言編程寶典--枚舉(enum).htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0038)http://www.hjflying.8u8.com/cl/017.htm -->
<HTML><HEAD><TITLE>王大剛-->C語言編程寶典-->枚舉(enum)</TITLE>
<META http-equiv=Content-Type content="text/html; charset=GB2312">
<META content="王大剛 C語言編程寶典 枚舉(enum)" name=keywords>
<META content="王大剛 - C語言編程寶典 - 枚舉(enum)" name=description>
<STYLE>#page {
LEFT: 0px; POSITION: absolute; TOP: 0px
}
.tt3 {
FONT: 9pt/12pt "宋體"
}
.tt2 {
FONT: 12pt/15pt "宋體"
}
A {
TEXT-DECORATION: none
}
A:hover {
COLOR: blue; TEXT-DECORATION: underline
}
</STYLE>
<META content="MSHTML 6.00.2600.0" name=GENERATOR></HEAD>
<BODY text=#000000 vLink=#006699 aLink=#9900ff link=#006699 bgColor=#ffffff
leftMargin=3 topMargin=3 marginwidth="3" marginheight="3">
<TABLE cellSpacing=0 cellPadding=10 width="100%" border=0>
<TBODY>
<TR>
<TD class=tt3 vAlign=top width="8%" bgColor=#e0e0e0><STRONG><A
href="http://www.hjflying.8u8.com/cl/018.htm">后一頁</A><BR><A
href="http://www.hjflying.8u8.com/cl/016.htm">前一頁</A><BR><A
href="http://www.hjflying.8u8.com/cl/index.html">回目錄</A><BR><A
href="http://www.hjflying.8u8.com/index.htm">回首頁</A><BR></STRONG></TD>
<TD class=tt2 width="84%" bgColor=#f5f8f8>
<CENTER><B><FONT style="FONT-SIZE: 16.5pt" face=楷體_GB2312
color=#ff6666>枚舉(enum)</FONT></B></CENTER>
<HR width="94%" color=#ee9b73 SIZE=1>
<BR>
<P> 枚舉是一個被命名的整型常數的集合, 枚舉在日常生活中很常見。
<BR> 例如表示星期的SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, <BR>SATURDAY, 就是一個枚舉。 <BR>
枚舉的說明與結構和聯合相似, 其形式為:
<BR> enum 枚舉名{
<BR>
標識符[=整型常數],
<BR>
標識符[=整型常數],
<BR>
...
<BR>
標識符[=整型常數], <BR> }
枚舉變量; <BR> 如果枚舉沒有初始化, 即省掉"=整型常數"時, 則從第一個標識符開始, 順
<BR>次賦給標識符0, 1, 2, ...。但當枚舉中的某個成員賦值后, 其后的成員按依次 <BR>加1的規則確定其值。
<BR> 例如下列枚舉說明后, x1, x2, x3, x4的值分別為0, 1, 2, 3。
<BR> enum string{x1, x2, x3, x4}x;
<BR> 當定義改變成: <BR> enum
string <BR> {
<BR> x1,
<BR> x2=0,
<BR> x3=50,
<BR> x4,
<BR> }x; <BR> 則x1=0, x2=0,
x3=50, x4=51 <BR> 注意: <BR> 1.
枚舉中每個成員(標識符)結束符是",", 不是";", 最后一個成員可省略 <BR>","。
<BR> 2. 初始化時可以賦負數, 以后的標識符仍依次加1。 <BR>
3. 枚舉變量只能取枚舉說明結構中的某個標識符常量。 <BR> 例如:
<BR> enum string
<BR> {
<BR> x1=5,
<BR> x2,
<BR> x3,
<BR> x4,
<BR> }; <BR> enum
strig x=x3; <BR> 此時, 枚舉變量x實際上是7。 <BR> <BR>
<BR>
<P>
類 型 說 明 <BR>
<P> 類型說明的格式為: <BR> typedef 類型
定義名; <BR> 類型說明只定義了一個數據類型的新名字而不是定義一種新的數據類型。這
<BR>里類型是Turbo C許可的任何一種數據類型。定義名表示這個類型的新名字。 <BR> 例如:
用下面語句定義整型數的新名字: <BR> typedef int SIGNED_INT;
<BR> 使用說明后, SIGNED_INT就成為int的同義詞了, 此時可以用SIGNED_INT 定
<BR>義整型變量。 <BR> 例如: SIGNED_INT i, j;(與int i, j等效)。
<BR> 但 long SIGNED_INT i, j; 是非法的。
<BR> typedef同樣可用來說明結構、聯合以及枚舉。 <BR>
說明一個結構的格式為: <BR> typedef struct{
<BR> 數據類型 成員名;
<BR> 數據類型 成員名;
<BR> ...
<BR> } 結構名;
<BR> 此時可直接用結構名定義結構變量了。例如: <BR>
typedef struct{ <BR>
char name[8]; <BR>
int class; <BR> char
subclass[6]; <BR>
float math, phys, chem, engl, biol; <BR> }
student; <BR> student Liuqi;
<BR> 則Liuqi被定義為結構數組和結構指針。 <BR>
在第二節講過的文件操作中, 用到的FILE就是一個已被說明的結構, 其說明 <BR>如下: <BR>
typedef struct <BR> {
<BR> short level;
<BR> unsigned flags;
<BR> char fd;
<BR> unsigned char
hold; <BR> short
bsize; <BR> unsigned
char *buffer; <BR>
unsigned char *curp;
<BR> unsigned
istemp; <BR> short
token; <BR> } FILE <BR>
這個結構說明已包含在stdio.h中, 用戶只要直接用FILE 定義文件指針變量 <BR>就可以。事實上, 引入類型說明的目的并非為了方便,
而是為了便于程序的移植。 <BR> <BR> <BR>
<P>
預 處 理 指 令 <BR>
<P> 由ANSI的標準規定, 預處理指令主要包括: <BR>
#define <BR> #error <BR>
#if <BR> #else <BR> #elif
<BR> #endif <BR> #ifdef
<BR> #ifndef <BR> #undef
<BR> #line <BR> #pragma
<BR> 由上述指令可以看出, 每個預處理指令均帶有符號"#"。下面只介紹一些常 <BR>用指令。
<BR> 1. #define 指令 <BR>
#define指令是一個宏定義指令, 定義的一般形式是: <BR> #define
宏替換名字符串(或數值) <BR> 由#define指令定義后,
在程序中每次遇到該宏替換名時就用所定義的字符 <BR>串(或數值)代替它。 <BR> 例如:
可用下面語句定義TRUE表示數值1, FALSE表示0。 <BR> #define TRUE 1
<BR> #define FALSE 0 <BR>
一旦在源程序中使用了TRUE和FALSE, 編譯時會自動的用1和0代替。 <BR> 注意:
<BR> 1. 在宏定義語名后沒有";" <BR> 2. 在Turbo
C程序中習慣上用大寫字符作為宏替換名, 而且常放在程序開頭。 <BR> 3. 宏定義還有一個特點,
就是宏替換名可以帶有形式參數, 在程序中用到 <BR>時, 實際參數會代替這些形式參數。 <BR>
例如: <BR> #define MAX(x, y) (x>y)?x:y
<BR> main() <BR> {
<BR> int i=10, j=15;
<BR> printf("The
Maxmum is %d", MAX(i, j); <BR> }
<BR> 上例宏定義語句的含義是用宏替換名MAX(x, y)代替x, y中較大者, 同樣也
<BR>可定義: <BR> #define MIN(x, y) (x<y)?x:y
<BR> 表示用宏替換名MIN(x, y)代替x, y中較小者。 <BR>
<P> 2. #error指令 <BR> 該指令用于程序的調試,
當編譯中遇到#error指令就停止編譯。其一般形式 <BR>為: <BR> #error 出錯信息
<BR> 出錯信息不加引號, 當編譯器遇到這個指令時, 顯示下列信息并停止編譯。
<BR> Fatal: filename linename error
directive <BR>
<P> 3. #include 指令
<BR> #include
指令的作用是指示編譯器將該指令所指出的另一個源文件嵌入 <BR>#include指令所在的程序中, 文件應使用雙引號或尖括號括起來。Turbo C
庫函 <BR>數的頭文件一般用#include指令在程序開關說明。 <BR> 例如:
<BR> #include <stdio.h>
<BR> 程序也允許嵌入其它文件, 例如: <BR>
main() <BR> {
<BR> #include
<help.c> <BR> } <BR>
其中help.c為另一個文件, 內容可為 <BR> printf("Glad
to meet you here!"); <BR>
上例編譯時將按集成開發環境的Options/Directories/Include directories
<BR>中指定的包含文件路徑查找被嵌入文件。 <BR> <BR> 4.
#if、#else、#endif指令 <BR> #if、#els和#endif指令為條件編擇指令,
它的一般形式為: <BR> #if 常數表達式
<BR> 語句段;
<BR> #else
<BR> 語句段;
<BR> #endif <BR> 上述結構的含義是:
若#if指令后的常數表達式為真, 則編譯#if到#else 之 <BR>間的程序段; 否則編譯#else到#endif之間的程序段。
<BR> 例如: <BR> #define MAX 200
<BR> main() <BR> {
<BR> #if MAX>999
<BR>
printf("compiled for bigger\n");
<BR> #else
<BR>
printf("compiled for small\n");
<BR> #endif
<BR> } <BR> <BR> 5.
#undef指令 <BR> #undef指令用來刪除事先定義的宏定義, 其一般形式為:
<BR> #undef 宏替換名 <BR> 例如:
<BR> #define TRUE 1
<BR> ...
<BR> #undef TURE <BR>
#undef主要用來使宏替換名只限定在需要使用它們的程序段中。 <BR> <BR>
<HR width="94%" color=#ee9b73 SIZE=1>
</TD>
<TD class=tt3 vAlign=bottom width="8%" bgColor=#e0e0e0><STRONG><A
href="http://www.hjflying.8u8.com/cl/018.htm">后一頁</A><BR><A
href="http://www.hjflying.8u8.com/cl/016.htm">前一頁</A><BR><A
href="http://www.hjflying.8u8.com/cl/index.html">回目錄</A><BR><A
href="http://www.hjflying.8u8.com/index.htm">回首頁</A><BR></STRONG></TD></TR></TBODY></TABLE></BODY></HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -