日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言枚举法礼泡声次数,C语言枚举类型举例

發布時間:2023/12/20 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言枚举法礼泡声次数,C语言枚举类型举例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C語言枚舉類型舉例

注:以下全部代碼的執行環境為VC++ 6.0

宏和枚舉的區別

宏和枚舉之間的差別主要在作用的時期和存儲的形式不同,宏是在預處理的階段進行替換工作的,它替換代碼段的文本,程序運行的過程中宏已不存在了。而枚舉是在程序運行之后才起作用的,枚舉常量存儲在數據段的靜態存儲區里。宏占用代碼段的空間,而枚舉除了占用空間,還消耗CPU資源。

但也不能就此說宏比枚舉好,如果需要定義非常多的常量,用一條enum {.....}明顯比一大堆define更清晰,枚舉也可以用來定義一些特殊類型,比如Bool,

如: type enum {FALSE,TRUE} Bool;

在程序中,可能需要為某些整數定義一個別名,我們可以利用預處理指令#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

也可以用這種方式:

typedef enum workday

{

saturday,

sunday = 0,

monday,

tuesday,

wednesday,

thursday,

friday

};

workday today, tomorrow; //變量today和tomorrow的類型為枚舉型workday,也即enum workday

注意:同一個程序中不能定義同名的枚舉類型,不同的枚舉類型中也不能存在同名的命名常量。錯誤示例如下所示:

錯誤聲明一:存在同名的枚舉類型

typedef enum

{

wednesday,

thursday,

friday

} workday;

typedef enum WEEK

{

saturday,

sunday = 0,

monday,

} workday;

錯誤聲明二:存在同名的枚舉成員

typedef enum

{

wednesday,

thursday,

friday

} workday_1;

typedef enum WEEK

{

wednesday,

sunday = 0,

monday,

} workday_2;

3. 使用枚舉類型的變量

3.1 對枚舉型的變量賦值。

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

方法一:先聲明變量,再對變量賦值

#include

enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN };

void main()

{

int x, y, z;

x = 10;

y = 20;

z = 30;

enum DAY yesterday, today, tomorrow;

yesterday = MON;

today???? = TUE;

tomorrow? = WED;

printf("%d %d %d \n", yesterday, today, tomorrow);

}

方法二:聲明變量的同時賦初值

#include

enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN };

void main()

{

int x=10, y=20, z=30;

enum DAY yesterday = MON,

today = TUE,

tomorrow = WED;

printf("%d %d %d \n", yesterday, today, tomorrow);

}

方法三:定義類型的同時聲明變量,然后對變量賦值。

#include

enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN } yesterday, today, tomorrow;

int x, y, z;

void main()

{

x = 10;? y = 20;? z = 30;

yesterday = MON;

today???? = TUE;

tomorrow? = WED;

printf("%d %d %d \n", x, y, z); //輸出:10 20 30

printf("%d %d %d \n", yesterday, today, tomorrow); //輸出:1 2 3

}

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

#include

enum DAY

{

MON=1,

TUE,

WED,

THU,

FRI,

SAT,

SUN

}

yesterday = MON, today = TUE, tomorrow = WED;

int x = 10, y = 20, z = 30;

void main()

{

printf("%d %d %d \n", x, y, z); //輸出:10 20 30

printf("%d %d %d \n", yesterday, today, tomorrow); //輸出:1 2 3

}

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

#include

enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN };

void main()

{

enum DAY yesterday, today, tomorrow;

yesterday = TUE;

today = (enum DAY) (yesterday + 1); //類型轉換

tomorrow = (enum DAY) 30; //類型轉換

//tomorrow = 3; //錯誤

printf("%d %d %d \n", yesterday, today, tomorrow); //輸出:2 3 30

}

3.3 使用枚舉型變量

#include

enum

{

BELL????????? = '\a',

BACKSPACE = '\b',

HTAB???????? = '\t',

RETURN????? = '\r',

NEWLINE??? = '\n',

VTAB???????? = '\v',

SPACE?????? = ' '

};

enum BOOLEAN { FALSE = 0, TRUE } match_flag;

void main()

{

int index = 0;

int count_of_letter = 0;

int count_of_space = 0;

char str[] = "I'm Ely efod";

match_flag = FALSE;

for(; str[index] != '\0'; index++)

if( SPACE != str[index] )

count_of_letter++;

else

{

match_flag = (enum BOOLEAN) 1;

count_of_space++;

}

printf("%s %d times %c", match_flag ? "match" : "not match", count_of_space, NEWLINE);

printf("count of letters: %d %c%c", count_of_letter, NEWLINE, RETURN);

}

輸出:

match 2 times

count of letters: 10

Press any key to continue

4. 枚舉類型與sizeof運算符

#include

enum escapes

{

BELL????? = '\a',

BACKSPACE = '\b',

HTAB????? = '\t',

RETURN??? = '\r',

NEWLINE?? = '\n',

VTAB????? = '\v',

SPACE???? = ' '

};

enum BOOLEAN { FALSE = 0, TRUE } match_flag;

void main()

{

printf("%d bytes \n", sizeof(enum escapes)); //4 bytes

printf("%d bytes \n", sizeof(escapes)); //4 bytes

printf("%d bytes \n", sizeof(enum BOOLEAN)); //4 bytes

printf("%d bytes \n", sizeof(BOOLEAN)); //4 bytes

printf("%d bytes \n", sizeof(match_flag)); //4 bytes

printf("%d bytes \n", sizeof(SPACE)); //4 bytes

printf("%d bytes \n", sizeof(NEWLINE)); //4 bytes

printf("%d bytes \n", sizeof(FALSE)); //4 bytes

printf("%d bytes \n", sizeof(0)); //4 bytes

typedef?? struct?? weekday_st

{

enum?? week? {sun=123456789,mon,tue,wed,thu,fri,sat };

enum?? day?? {monring,?? moon,?? aftermoon} ;

}weekday_st;

int?? main(int?? argc,?? char?? *argv[])

{

printf( "sizeof(weekday_st)=%d\n ",?? sizeof(weekday_st));

printf( "sizeof(weekday)=%d\n ",?? sizeof(weekday_st::week));

printf( "sizeof(day)=%d\n ",?? sizeof(weekday_st::day));

return?? 0;

}

sizeof(weekday_st)=1

sizeof(weekday)=4

sizeof(day)=4

printf( "sizeof(weekday_st)=%d\n ",?? sizeof(weekday_st));

這里因為結構體里面并沒有定義任何的變量

所以這個結構是空的,但是用sizeof進行運算的話也不能返回0

因為畢竟存在著這么一個東西

所以這時sizeof返回一個在機器里面所能表達的最小的存儲單位的值

一般的PC里面最小的存儲單位的值是char

所以sizeof返回1

printf( "sizeof(weekday)=%d\n ",?? sizeof(weekday_st::week));

printf( "sizeof(day)=%d\n ",?? sizeof(weekday_st::day));

因為枚舉量是當作整型常量來處理的

所以上面這兩個sizeof都是返回4

這里的enum?? week和enum?? day只是內嵌“類型”,而不是成員變量,如果改成:

typedef?? struct?? weekday_st

{

enum?? week? {sun=123456789,mon,tue,wed,thu,fri,sat }?? ew;

enum??? day?? {monring,?? moon,?? aftermoon}?? ed;

}weekday_st;

sizeof(weekday_st)=8

sizeof(weekday)=4

sizeof(day)=4

總結

以上是生活随笔為你收集整理的c语言枚举法礼泡声次数,C语言枚举类型举例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。