?? 44.htm
字號(hào):
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<META NAME="Author" CONTENT="wdg">
<META NAME="GENERATOR" CONTENT="Mozilla/4.03 [en] (Win95; I) [Netscape]">
<TITLE>44</TITLE>
</HEAD>
<BODY>
<P>
枚 舉(enum)
<P> 枚舉是一個(gè)被命名的整型常數(shù)的集合, 枚舉在日常生活中很常見。
<BR> 例如表示星期的SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY,
<BR>SATURDAY, 就是一個(gè)枚舉。
<BR> 枚舉的說明與結(jié)構(gòu)和聯(lián)合相似, 其形式為:
<BR> enum 枚舉名{
<BR>
標(biāo)識(shí)符[=整型常數(shù)],
<BR>
標(biāo)識(shí)符[=整型常數(shù)],
<BR>
...
<BR>
標(biāo)識(shí)符[=整型常數(shù)],
<BR> } 枚舉變量;
<BR> 如果枚舉沒有初始化, 即省掉"=整型常數(shù)"時(shí), 則從第一個(gè)標(biāo)識(shí)符開始,
順
<BR>次賦給標(biāo)識(shí)符0, 1, 2, ...。但當(dāng)枚舉中的某個(gè)成員賦值后, 其后的成員按依次
<BR>加1的規(guī)則確定其值。
<BR> 例如下列枚舉說明后, x1, x2, x3, x4的值分別為0, 1,
2, 3。
<BR> enum string{x1, x2, x3, x4}x;
<BR> 當(dāng)定義改變成:
<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. 枚舉中每個(gè)成員(標(biāo)識(shí)符)結(jié)束符是",", 不是";",
最后一個(gè)成員可省略
<BR>","。
<BR> 2. 初始化時(shí)可以賦負(fù)數(shù), 以后的標(biāo)識(shí)符仍依次加1。
<BR> 3. 枚舉變量只能取枚舉說明結(jié)構(gòu)中的某個(gè)標(biāo)識(shí)符常量。
<BR> 例如:
<BR> enum string
<BR> {
<BR> x1=5,
<BR> x2,
<BR> x3,
<BR> x4,
<BR> };
<BR> enum strig x=x3;
<BR> 此時(shí), 枚舉變量x實(shí)際上是7。
<BR>
<BR>
<P>
類 型 說 明
<P> 類型說明的格式為:
<BR> typedef 類型 定義名;
<BR> 類型說明只定義了一個(gè)數(shù)據(jù)類型的新名字而不是定義一種新的數(shù)據(jù)類型。這
<BR>里類型是Turbo C許可的任何一種數(shù)據(jù)類型。定義名表示這個(gè)類型的新名字。
<BR> 例如: 用下面語句定義整型數(shù)的新名字:
<BR> typedef int SIGNED_INT;
<BR> 使用說明后, SIGNED_INT就成為int的同義詞了, 此時(shí)可以用SIGNED_INT
定
<BR>義整型變量。
<BR> 例如: SIGNED_INT i, j;(與int i, j等效)。
<BR> 但 long SIGNED_INT i, j; 是非法的。
<BR> typedef同樣可用來說明結(jié)構(gòu)、聯(lián)合以及枚舉。
<BR> 說明一個(gè)結(jié)構(gòu)的格式為:
<BR> typedef struct{
<BR> 數(shù)據(jù)類型
成員名;
<BR> 數(shù)據(jù)類型
成員名;
<BR> ...
<BR> } 結(jié)構(gòu)名;
<BR> 此時(shí)可直接用結(jié)構(gòu)名定義結(jié)構(gòu)變量了。例如:
<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被定義為結(jié)構(gòu)數(shù)組和結(jié)構(gòu)指針。
<BR> 在第二節(jié)講過的文件操作中, 用到的FILE就是一個(gè)已被說明的結(jié)構(gòu),
其說明
<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> 這個(gè)結(jié)構(gòu)說明已包含在stdio.h中, 用戶只要直接用FILE
定義文件指針變量
<BR>就可以。事實(shí)上, 引入類型說明的目的并非為了方便, 而是為了便于程序的移植。
<BR>
<BR>
<P>
預(yù) 處 理 指 令
<P> 由ANSI的標(biāo)準(zhǔn)規(guī)定, 預(yù)處理指令主要包括:
<BR> #define
<BR> #error
<BR> #if
<BR> #else
<BR> #elif
<BR> #endif
<BR> #ifdef
<BR> #ifndef
<BR> #undef
<BR> #line
<BR> #pragma
<BR> 由上述指令可以看出, 每個(gè)預(yù)處理指令均帶有符號(hào)"#"。
下面只介紹一些常
<BR>用指令。
<BR> 1. #define 指令
<BR> #define指令是一個(gè)宏定義指令, 定義的一般形式是:
<BR> #define 宏替換名字符串(或數(shù)值)
<BR> 由#define指令定義后, 在程序中每次遇到該宏替換名時(shí)就用所定義的字符
<BR>串(或數(shù)值)代替它。
<BR> 例如: 可用下面語句定義TRUE表示數(shù)值1, FALSE表示0。
<BR> #define TRUE 1
<BR> #define FALSE 0
<BR> 一旦在源程序中使用了TRUE和FALSE, 編譯時(shí)會(huì)自動(dòng)的用1和0代替。
<BR> 注意:
<BR> 1. 在宏定義語名后沒有";"
<BR> 2. 在Turbo C程序中習(xí)慣上用大寫字符作為宏替換名,
而且常放在程序開頭。
<BR> 3. 宏定義還有一個(gè)特點(diǎn), 就是宏替換名可以帶有形式參數(shù),
在程序中用到
<BR>時(shí), 實(shí)際參數(shù)會(huì)代替這些形式參數(shù)。
<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中較小者。
<P> 2. #error指令
<BR> 該指令用于程序的調(diào)試, 當(dāng)編譯中遇到#error指令就停止編譯。其一般形式
<BR>為:
<BR> #error 出錯(cuò)信息
<BR> 出錯(cuò)信息不加引號(hào), 當(dāng)編譯器遇到這個(gè)指令時(shí), 顯示下列信息并停止編譯。
<BR> Fatal: filename linename error directive
<P> 3. #include 指令
<BR> #include 指令的作用是指示編譯器將該指令所指出的另一個(gè)源文件嵌入
<BR>#include指令所在的程序中, 文件應(yīng)使用雙引號(hào)或尖括號(hào)括起來。Turbo C 庫函
<BR>數(shù)的頭文件一般用#include指令在程序開關(guān)說明。
<BR> 例如:
<BR> #include <stdio.h>
<BR> 程序也允許嵌入其它文件, 例如:
<BR> main()
<BR> {
<BR> #include <help.c>
<BR> }
<BR> 其中help.c為另一個(gè)文件, 內(nèi)容可為
<BR> printf("Glad to meet you here!");
<BR> 上例編譯時(shí)將按集成開發(fā)環(huán)境的Options/Directories/Include
directories
<BR>中指定的包含文件路徑查找被嵌入文件。
<BR>
<BR> 4. #if、#else、#endif指令
<BR> #if、#els和#endif指令為條件編擇指令, 它的一般形式為:
<BR> #if 常數(shù)表達(dá)式
<BR> 語句段;
<BR> #else
<BR> 語句段;
<BR> #endif
<BR> 上述結(jié)構(gòu)的含義是: 若#if指令后的常數(shù)表達(dá)式為真, 則編譯#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>
<P>
<A HREF="index.html">返回目錄</A>
<BR>
</BODY>
</HTML>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -