enum與typedef enum的用法

2021-05-28 07:37:32 字數 922 閱讀 8091

一,兩者的用法

列舉型別定義用關鍵字enum標識,形式為:

enum 識別符號

;列舉資料(列舉常量)是一些特定的識別符號,識別符號代表什麼含義,完全由程式設計師決定。資料列舉的順序規定了列舉資料的序號,從0開始,依次遞增。

enum status

;列舉型別status僅有兩個資料,乙個是copy,乙個是delete,序號為0、1,代表複製與刪除。

enum status

;則copy的序號為6,delete的序號為7。

dwi_nothing, dwi_2x2icon, dwi_icon, dwi_text, dwi_fulltext, dwi_centertext, dwi_fullcentertext, dwi_none中的乙個,這些你都可以自己取值。預設為零,其後面的依次加1。如果你給dwi_nothing取其它值,相應的它後面的沒有顯示賦值的就要在這個基礎上依次加1,直到遇到顯示賦值的為止。

enum用來定義一系列巨集定義常量區別用,相當於一系列的#define xx xx,當然它後面的識別符號也可當作乙個型別識別符號;typedef  enum則是用來定義乙個資料型別,那麼該型別的變數值只能在enum定義的範圍內取。兩者在這點上是沒有差別的。

二,一些說明

用enum定義的型別,只能在它的值域範圍內取。比如:

#include "stdafx.h"

enum led_type

;void crake(led_type xx)

int _tmain()

編譯時程式都會報錯:error c2664: 'crake' : cannot convert parameter 1 from 'int' to 'led_type'。儘管enum的型別值仍然是整形,但並不意味著它可以接受範圍外的整型數。(關於此問題,在linux中,由別人驗證是可以編譯通過的。因為兩者的c編譯法則有差別)

列舉與結構enum

使用 enum 來建立列舉。有如類和其他命名型別,列舉可以有方法。enum rank int let ace rank.ace by gashero let acerawvalue ace.toraw 在如上例子中,原始值的型別是 int 所以可以只指定第乙個原始值。其後的原始值都是按照順序賦值的。...

enum 的範圍與size

一 enum的取值範圍 c 標準規定超出列舉型別表示範圍的賦值結果是undefined的。enum的取值範圍和 int 的範圍並不是直接一致的。計算enum的取值範圍,可以按如下方式操作 1 不考慮負數 獲取enum中的最大值,根據這個最大值所具有的位數,可以計算enum的表示範圍。舉個例子 enu...

enum與typedef enum的用法

在程式中,可能需要為某些整數定義乙個別名,我們可以利用預處理指令 define 來完成這項工作,您的 可能是 define mon 1 define tue 2 define wed 3 define thu 4 define fri 5 define sat 6 define sun 7 在此,我...