枚舉變量c語言,c語言定義枚舉變量

本文目錄一覽:

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-26 13:14
下一篇 2024-12-26 13:14

相關推薦

  • int類型變量的細節與注意事項

    本文將從 int 類型變量的定義、聲明、初始化、範圍、運算和類型轉換等方面,對 int 類型變量進行詳細闡述和講解,幫助讀者更好地掌握和應用 int 變量。 一、定義與聲明 int…

    編程 2025-04-29
  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變量時顯示的指定變量類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python定義函數判斷奇偶數

    本文將從多個方面詳細闡述Python定義函數判斷奇偶數的方法,並提供完整的代碼示例。 一、初步了解Python函數 在介紹Python如何定義函數判斷奇偶數之前,我們先來了解一下P…

    編程 2025-04-29
  • Python input參數變量用法介紹

    本文將從多個方面對Python input括號里參數變量進行闡述與詳解,並提供相應的代碼示例。 一、基本介紹 Python input()函數用於獲取用戶輸入。當程序運行到inpu…

    編程 2025-04-29
  • Python符號定義和使用方法

    本文將從多個方面介紹Python符號的定義和使用方法,涉及注釋、變量、運算符、條件語句和循環等多個方面。 一、注釋 1、單行注釋 # 這是一條單行注釋 2、多行注釋 “”” 這是一…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • Python中的隊列定義

    本篇文章旨在深入闡述Python中隊列的定義及其應用,包括隊列的定義、隊列的類型、隊列的操作以及隊列的應用。同時,我們也會為您提供Python代碼示例。 一、隊列的定義 隊列是一種…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29

發表回復

登錄後才能評論