本文目錄一覽:
C語言:輸出枚舉型變量的值,應該用什麼格式說明
在c語言中,枚舉變量,即以enum關鍵字定義的變量,是按照整型或者無符號整型來處理的。
1
如果在枚舉變量中,不存在負值,如
enum
test
{
a,
b,
};
這樣的定義,系統會將該枚舉變量按照無符號整型處理,即unsigned
int
型。輸出的時候使用%u格式即可。
enum
test
t
=
a;
printf(“%u”,
t);
2
如果在枚舉變量中存在負值,那麼系統按整型處理,即int型。如定義
enum
test
{
a=-199,
b,
};
輸出時,需要用%d格式:
enum
test
t
=
a;
printf(“%d”,
t);
3
由於枚舉變量在書寫時,一般不會太大,很少有在沒有負數的時候,即按照無符號數處理的時候超出有符號數所能表示的正數範圍,即一般不會把最高位置一,所以大多數情況下,用%d輸出都是沒問題的。
C語言的枚舉類型知識
導語:定義一個變量是枚舉類型,可以先定義一個枚舉類型名,然後再說明這個變量是該枚舉類型。下面是C語言的枚舉類型知識,歡迎閱讀:
在實際應用中,有的變量只有幾種可能取值。如人的性別只有兩種可能取值,星期只有七種可能取值。在 C 語言中對這樣取值比較特殊的變量可以定義為枚舉類型。所謂枚舉是指將變量的值一一列舉出來,變量只限於列舉出來的值的範圍內取值。
例如:
enum weekday{sun,mon,tue,wed,thu,fri,sat};
定義了一個枚舉類型名 enum weekday,然後定義變量為該枚舉類型。例如:
enum weekday day;
當然,也可以直接定義枚舉類型變量。例如:
enum weekday{sun,mon,tue,wed,thu,fri,sat} day;
其中,sum,mon,…,sat 等稱為枚舉元素或枚舉常量,它們是用戶定義的標識符。
需要說明的有以下幾點。
① 枚舉元素不是變量,而是常數,因此枚舉元素又稱為枚舉常量。因為是常量,所以不能對枚舉元素進行賦值。
② 枚舉元素作為常量,它們是有值的,C 語言在編譯時按定義的順序使它們的值為,1,2,…。
在上面的說明中,sun 的值為 0,mon 的值為 1,…sat 的.值為 6,如果有賦值語句
day=mon;
則 day 變量的值為 1。當然,這個變量值是可以輸出的。例如:
printf (“%d”,day);
將輸出整數 1。
如果在定義枚舉類型時指定元素的值,也可以改變枚舉元素的值。例如:
enum weekday{sun=7,mon=1,tue,wed,thu,fri,sat}day;
這時,sun 為 7,mon 為 1,以後元素順次加 1,所以 sat 就是 6 了。
③ 枚舉值可以用來作判斷。例如:
if (day==mon) {…}
if (daymon) {…}
枚舉值的比較規則是:按其在說明時的順序號比較,如果說明時沒有人為指定,則第一個枚舉元素的值認作 0。例如,monsun,satfri。
C 語言教程 ?216?
④ 一個整數不能直接賦給一個枚舉變量,必須強制進行類型轉換才能賦值。例如:
day=(enum weekday)2;
這個賦值的意思是,將順序號為 2 的枚舉元素賦給 day,相當於workday=tue;
【例 11.6】從鍵盤輸入一個整數,顯示與該整數對應的枚舉常量的英文名稱。
# include
void main( )
{
enum weekday {sun,mon,tue,wed,thu,fri,sat} day;
int k;
printf(“input a number(0–6)”);
scanf(“%d”,k);
day=(enum weekday)k;
switch(day)
{
case sun: printf(“sunday/n”);break;
case mon: printf(“monday/n”);break;
case tue: printf(“tuesday/n”);break;
case wed: printf(“wednesday/n”);break;
case thu: printf(“thursday/n”);break;
case fri: printf(“friday/n”);break;
case sat: printf(“satday/n”);break;
default: printf(“input error/n”);break;
}
}
程序運行結果為:
input a number(0–6)1
monday
在該程序中,枚舉常量與枚舉變量可以進行比較,但要輸出枚舉常量對應的英文單詞,不能使用以下語句:
printf(” %s”,mon);
因為枚舉常量 mon 為整數值,而非字符串。
在使用枚舉變量時,主要關心的不是它的值的大小,而是其表示的狀態。
註:以下全部代碼的執行環境為VC++ 6.0
在程序中,可能需要為某些整數定義一個別名,我們可以利用預處理指令#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。
c語言枚舉變量求解
答案是:B
枚舉元素本身由系統定義了一個表示序號的數值,從0開始順序定義
可對枚舉元素初始化,未初始化的元素將根據之前的元素依次遞增賦值
C語言枚舉類型,知道這些你就會了
在實際編程中,有些數據的取值往往是有限的,只能是非常少量的整數,並且最好為每個值都取一個名字,以方便在後續代碼中使用,比如一個星期只有七天,一年只有十二個月,一個班每周有六門課程等。
以每周七天為例,我們可以使用 #define 命令來給每天指定一個名字:
#define 命令雖然能解決問題,但也帶來了不小的副作用,導致宏名過多,代碼鬆散,看起來總有點不舒服。C語言提供了一種 枚舉(Enum)類型 ,能夠列出所有可能的取值,並給它們取一個名字。
enum 是一個新的關鍵字,專門用來定義枚舉類型,這也是它在C語言中的唯一用途; typeName 是枚舉類型的名字; valueName1, valueName2, valueName3, …… 是每個值對應的名字的列表。注意最後的 ; 不能少。
例如,列出一個星期有幾天:
可以看到,我們僅僅給出了名字,卻沒有給出名字對應的值,這是因為枚舉值默認從 0 開始,往後逐個加 1(遞增);也就是說,week 中的 Mon、Tues …… Sun 對應的值分別為 0、1 …… 6。
我們也可以給每個名字都指定一個值:
更為簡單的方法是只給第一個名字指定值:
這樣枚舉值就從 1 開始遞增,跟上面的寫法是等效的。
枚舉是一種類型,通過它可以定義枚舉變量:
也可以在定義枚舉類型的同時定義變量:
有了枚舉變量,就可以把列表中的值賦給它:
或者:
Mon、Tues、Wed 這些名字都被替換成了對應的數字。這意味着,Mon、Tues、Wed 等都不是變量,它們不佔用數據區(常量區、全局數據區、棧區和堆區)的內存,而是直接被編譯到命令裡面,放到代碼區,所以不能用 取得它們的地址。這就是枚舉的本質。
枚舉類型變量需要存放的是一個整數,它的長度和 int 相同。
c語言中的枚舉
Fortran的值為102.
basic,assembly,ada,COBOL,Fortran分別是什麼意思,不重要。C語言枚舉型,系統只把它們作為用戶自定義變量處理。沒有特殊含義。
在定義枚舉型變量ada的時候給它賦值100,那麼COBOL就是101,Fortran102。
C語言中的枚舉類型
如果一個變量只有幾種可能的值,則可以定義為 枚舉類型 。所謂“枚舉”是指將變量的值一一列舉出來,變量的值只限於列舉出來的值的範圍內。
聲明枚舉類型用 enum 開頭。例如:
聲明了一個枚舉類型enum weekday,則可以用此類型來定義變量。例如:
也可以直接定義枚舉變量,例如:
其中sun、mon、…、sat稱為 枚舉元素 或 枚舉常量 。
說明:
1、在C編譯中,對枚舉元素按常量處理,故稱為 枚舉常量 。它們不是變量,不能進行賦值。例如 sun = 7; mon = 1; 是錯誤的。
2、枚舉元素作為常量,是有值的。C語言編譯按定義時的順序使它們的值為0、1、2……也可以在定義時,指定枚舉元素的值,例如:
3、枚舉值可以用來作判斷比較。例如:
4、一個證書不能直接賦值給一個枚舉變量。例如 workday=1; 是錯誤的。它們屬於不同的類型。應該先進性強制類型轉換,然後才能賦值。例如:
相當於將序號為2的枚舉元素賦值給workday,相當於
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/293617.html