English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C 语言基础教程

C 语言流程控制

C 語言函數

C 語言數組

C 語言指針

C 語言字串

C 语言结构体

C 语言文件

C 其他

C 语言参考手册

C 語言枚舉(enum)

在本教程中,您将通过示例学习C语言编程中的enum(枚举)。

在C语言编程中,枚举类型(也称为enum)是由整数常量组成的数据类型。要定义枚举,将使用enum关键字。

enum flag {const1, const2, ..., constN};

默认情况下const1为0,const2为1,依此类推。您可以在声明期间更改枚举元素的默认值(如有必要)。

// 更改枚举常量的默认值
enum suit {
    club = 0,
    diamonds = 10,
    hearts = 20,
    spades = 3,
};

枚举类型声明

定义enum类型时,将创建变量的蓝图。下面介绍如何创建枚举类型的变量。

enum boolean {false, true};
enum boolean check; // 声明一个枚举变量

在此,将创建enum boolean类型的变量check。

你也可以这样声明枚举变量。

enum boolean {false, true} check;

Qui, il valore di false è uguale a 0, il valore di true è uguale a 1.

Esempio: tipo enum

#include <stdio.h>
enum week {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday};
int main()
{
    // Creazione della variabile today di tipo enum week
    enum week today;
    today = Wednesday;
    printf("Giorno %d", today+1);
    return 0;
}

Risultato di output

Giorno 4

Perché utilizzare l'enumerazione?

Una variabile enum può assumere solo un valore. Questo è un esempio di esempio,

#include <stdio.h>
enum suit {
    club = 0,
    diamonds = 10,
    hearts = 20,
    spades = 3
}; card;
int main() 
{
    card = club;
	printf("Dimensione variabile enum = %d bytes", sizeof(card));	
	return 0;
}

Risultato di output

Dimensione variabile enum = 4 bytes

Qui, otteniamo 4 perché la dimensione di int è di 4 byte.

Come utilizzare l'enumerazione per le etichette?

Facciamo un esempio

enum designFlags {
	ITALICS = 1,
	BOLD = 2,
	UNDERLINE = 4
}; button;

Supponiamo di essere in fase di progettazione di un pulsante per un'applicazione Windows. Puoi impostare i flag ITALICS, BOLD e UNDERLINE per gestire il testo.

Nei codici di pseudo sopra, tutti i costanti di integrazione sono potenze di 2 per un motivo.

// in binario
ITALICS = 00000001
BOLD = 00000010
UNDERLINE = 00000100

Poiché il costante di integrazione è una potenza di 2, è possibile combinare due o più etichette in una volta senza utilizzareOR bitwise |operatore di sovrapposizione. Questo ti permette di selezionare due o più etichette contemporaneamente. Ad esempio,

#include <stdio.h>
enum designFlags {
	BOLD = 1,
	ITALICS = 2,
	UNDERLINE = 4
};
int main() {
	int myDesign = BOLD | UNDERLINE; 
        // 00000001
        // | 00000100
        // ___________
        // 00000101
	printf("%d", myDesign);
	return 0;
}

Risultato di output

5

Quando l'output è 5, sai sempre che sono stati utilizzati grassetto e sottolineato.

Inoltre, puoi aggiungere etichette secondo necessità.

if (myDesign & ITALICS) {
    //斜體
}

在這裡,我們在設計中添加了斜體。注意,if 語句內部僅編寫斜體代碼。

在 C 語言編程中,您無需使用枚舉就可以完成几乎所有任務。但是,在某些情況下,它們可能非常方便。