C Програмування

Як використовувати enum мовою C

Як використовувати enum мовою C
Програма enum на мові програмування C використовується для визначення інтегральних постійних значень, що дуже допомагає при написанні чистих та читабельних програм. Програмісти зазвичай використовують перерахування для визначення названих інтегральних констант у своїх програмах для забезпечення кращої читабельності та ремонтопридатності програмного забезпечення. У цій статті буде детально обговорено перелік.

Синтаксис

перерахування
Enumeration_Constant_Element-1,
Enumeration_Constant_Element-2,
Enumeration_Constant_Element-3,
.. ,
Enumeration_Constant_Element-n,
;

Значення за замовчуванням Enumeration_Constant_Element-1 дорівнює 0, значення Enumeration_Constant_Element-2 дорівнює 1, значення Enumeration_Constant_Element-3 дорівнює 2, а значення Enumeration_Constant_Element-n дорівнює (n-1).

Глибоке занурення в Енум

Тепер, оскільки ми знаємо синтаксис для визначення типу перерахування, давайте розглянемо приклад:

помилка переліку
IO_ERROR,
DISK_ERROR,
ПОМИЛКА МЕРЕЖІ
;

Ключове слово “перелік” завжди слід використовувати для визначення типу перерахування. Отже, кожного разу, коли ви хочете визначити тип перерахування, ви повинні використовувати ключове слово “перелік” раніше . Після ключового слова “enum”, ви повинні використовувати дійсний ідентифікатор, щоб визначити .

У наведеному вище прикладі компілятор призначить IO_ERROR інтегральному значенню: 0, DISK_ERROR інтегральному значенню: 1 та NETWORK_ERROR інтегральному значенню: 2.  За замовчуванням першому елементу перерахування завжди присвоюється значення 0, наступному елементу перерахування - значення 1 тощо.

Цю поведінку за замовчуванням можна змінити, якщо це необхідно, присвоївши постійне значення інтегралу явним чином, наступним чином:

помилка переліку
IO_ERROR = 2,
DISK_ERROR,
NETWORK_ERROR = 8 ,
PRINT_ERROR
;

У цьому випадку IO_ERROR програмістом явно присвоюється значення 2, DISK_ERROR компілятором присвоюється значення 3, NETWORK_ERROR програмістом явно присвоюється значення 8, а PRINT_ERROR присвоюється наступному інтегральне значення попереднього елемента перерахування NETWORK_ERROR (i.e., 9) упорядником.

Отже, тепер ви розумієте, як визначити визначений користувачем тип перерахування в C. Чи можна оголосити змінну типу enum (як ми можемо оголосити змінну цілочисельного типу)?  Так! Ви можете оголосити змінну enum наступним чином:

enum Помилка Hw_Error;

Знову ж таки, "перелік" - це ключове слово тут, "Помилка" - тип переліку, а "Hw_Error" - змінна переліку.

Тепер ми розглянемо наступні приклади, щоб зрозуміти різні звички enum:

  • Приклад 1: Використання визначення перерахування за замовчуванням
  • Приклад 2: Використання користувацького визначення перерахування
  • Приклад 3: визначення переліку за допомогою постійного виразу
  • Приклад 4: обсяг переліку

Приклад 1: Використання визначення за замовчуванням

У цьому прикладі ви дізнаєтесь, як визначити тип перерахування зі значеннями констант за замовчуванням. Компілятор подбає про присвоєння значень за замовчуванням елементам перерахування. Нижче ви побачите приклад програми та відповідний результат.

#включати
/ * Визначити тип перерахування * /
Помилка переліку
IO_ERROR,
DISK_ERROR,
ПОМИЛКА МЕРЕЖІ
;
int main ()

enum Помилка Hw_Error; / * Створення змінної переліку * /
printf ("Встановлення Hw_Error на IO_ERROR \ n");
Hw_Error = IO_ERROR;
printf ("Значення Hw_Error =% d \ n", Hw_Error);
printf ("\ nВстановлення Hw_Error на DISK_ERROR \ n");
Hw_Error = DISK_ERROR;
printf ("Значення Hw_Error =% d \ n", Hw_Error);
printf ("\ nВстановлення Hw_Error до NETWORK_ERROR \ n");
Hw_Error = NETWORK_ERROR;
printf ("Значення Hw_Error =% d \ n", Hw_Error);
повернути 0;

Приклад 2: Використання користувацького визначення переліку

У цьому прикладі ви дізнаєтесь, як визначити тип перерахування за допомогою користувацької константи. Крім того, цей приклад допоможе вам зрозуміти, як ініціалізація користувацьких констант може бути виконана в будь-якому випадковому порядку. У цьому прикладі ми чітко визначили значення константи для 1вул і 3рд елементи переліку (i.e., IO_ERROR та NETWORK_ERROR, відповідно), але ми пропустили явну ініціалізацію для 2й та 4го елементів. Тепер відповідальність компілятора - присвоїти значення 2 за замовчуваннямй та 4го елементи переліку (i.e., DISK_ERROR та PRINT_ERROR, відповідно). DISK_ERROR буде присвоєно значення 3, а PRINT_ERROR - значення 9. Нижче ви побачите приклад програми та результати.

#включати
/ * Визначити тип переліку - Спеціальна ініціалізація * /
Помилка переліку
IO_ERROR = 2,
DISK_ERROR,
NETWORK_ERROR = 8,
PRINT_ERROR
;
int main ()

/ * Оголосити змінну перерахування * /
enum Помилка Hw_Error;
printf ("Встановлення Hw_Error на IO_ERROR \ n");
Hw_Error = IO_ERROR;
printf ("Значення Hw_Error =% d \ n", Hw_Error);
printf ("\ nВстановлення Hw_Error на DISK_ERROR \ n");
Hw_Error = DISK_ERROR;
printf ("Значення Hw_Error =% d \ n", Hw_Error);
printf ("\ nВстановлення Hw_Error до NETWORK_ERROR \ n");
Hw_Error = NETWORK_ERROR;
printf ("Значення Hw_Error =% d \ n", Hw_Error);
printf ("\ nВстановлення помилки Hw_Error до PRINT_ERROR \ n");
Hw_Error = PRINT_ERROR;
printf ("Значення Hw_Error =% d \ n", Hw_Error);
повернути 0;

Приклад 3: Визначення перечислення за допомогою постійного виразу

У цьому прикладі ви дізнаєтеся, як за допомогою виразу константи визначити значення константи для елементів переліку.

#включати
/ * Визначте тип переліку - користувацька ініціалізація за допомогою константного виразу
тут використовується постійний вираз у випадку:
a. IO_ERROR та
b. ПОМИЛКА МЕРЕЖІ
Це незвичний спосіб визначення елементів переліку; проте це
програма демонструє, що такий спосіб ініціалізації елементів перерахування можливий у c.
* /
помилка переліку
IO_ERROR = 1 + 2 * 3 + 4,
DISK_ERROR,
ПОМИЛКА МЕРЕЖІ = 2 == 2,
PRINT_ERROR
;
int main ()

/ * Оголосити змінну перерахування * /
enum Помилка Hw_Error;
printf ("Встановлення Hw_Error на IO_ERROR \ n");
Hw_Error = IO_ERROR;
printf ("Значення Hw_Error =% d \ n", Hw_Error);
printf ("\ nВстановлення Hw_Error на DISK_ERROR \ n");
Hw_Error = DISK_ERROR;
printf ("Значення Hw_Error =% d \ n", Hw_Error);
printf ("\ nВстановлення Hw_Error до NETWORK_ERROR \ n");
Hw_Error = NETWORK_ERROR;
printf ("Значення Hw_Error =% d \ n", Hw_Error);
printf ("\ nВстановлення помилки Hw_Error до PRINT_ERROR \ n");
Hw_Error = PRINT_ERROR;
printf ("Значення Hw_Error =% d \ n", Hw_Error);
повернути 0;

Приклад 4: enum Scope

У цьому прикладі ви дізнаєтесь, як правило обсягу працює для enum. MACRO (#define) міг бути використаний для визначення константи замість переліку, але правило масштабування не працює для MACRO.

#включати
int main ()

/ * Визначити тип перерахування * /
enum Помилка_1
IO_ERROR = 10,
DISK_ERROR,
NETWORK_ERROR = 3,
PRINT_ERROR
;

/ * Визначте тип перерахування у внутрішній області * /
enum Помилка_1
IO_ERROR = 20,
DISK_ERROR,
NETWORK_ERROR = 35,
PRINT_ERROR
;
/ * Оголосити змінну перерахування * /
enum Error_1 Hw_Error;
printf ("Встановлення Hw_Error на IO_ERROR \ n");
Hw_Error = IO_ERROR;
printf ("Значення Hw_Error =% d \ n", Hw_Error);
printf ("\ nВстановлення Hw_Error на DISK_ERROR \ n");
Hw_Error = DISK_ERROR;
printf ("Значення Hw_Error =% d \ n", Hw_Error);
printf ("\ nВстановлення Hw_Error до NETWORK_ERROR \ n");
Hw_Error = NETWORK_ERROR;
printf ("Значення Hw_Error =% d \ n", Hw_Error);
printf ("\ nВстановлення помилки Hw_Error до PRINT_ERROR \ n");
Hw_Error = PRINT_ERROR;
printf ("Значення Hw_Error =% d \ n", Hw_Error);

повернути 0;

Порівняння переліку та макросу

Перелік Макрос
Правило масштабування застосовується до переліку. Правило масштабування не застосовується до макросів.
Призначення значення за замовчуванням відбувається автоматично.

Enum дуже корисний у визначенні великої кількості констант. Компілятор виконує ініціалізацію постійного значення за замовчуванням.

Програміст завжди повинен чітко згадувати значення константи макросу.

Це може бути нудним процесом для великої кількості констант, оскільки програміст повинен завжди вручну визначати кожне значення константи, визначаючи макрос.

Висновок

Програму перерахування на мові C можна розглядати як додатковий метод для окремих програм або невеликих проектів, оскільки програмісти завжди можуть використовувати макрос замість переліку. Однак досвідчені програмісти, як правило, використовують перелічення макросів для масштабних проектів з розробки програмного забезпечення. Це допомагає писати чисті та читабельні програми.

Як збільшити FPS в Linux?
FPS означає Кадри в секунду. Завданням FPS є вимірювання частоти кадрів при відтворенні відео або ігрових виставах. Простими словами кількість безпере...
Найкращі лабораторні ігри Oculus App
Якщо ви є власником гарнітури Oculus, то вам потрібно дізнатися про бокове завантаження. Бокове завантаження - це процес встановлення негарнітного вмі...
Top 10 Games to Play on Ubuntu
Windows platform has been one of the dominating platforms for gaming because of the huge percentage of games that are developing today to natively sup...