C Програмиране

Как да използвам enum в език C

Как да използвам enum в език C
Програмата enum в езика за програмиране C се използва за дефиниране на интегрални постоянни стойности, което е много полезно при писането на чисти и четими програми. Програмистите обикновено използват изброяване, за да дефинират назовани интегрални константи в своите програми, за да осигурят по-добра четливост и поддръжка на софтуера. Тази статия ще обсъди подробно enum.

Синтаксис

преброяване
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).

Дълбоко гмуркане в Enum

Сега, тъй като знаем синтаксиса за определяне на типа на изброяване, нека разгледаме един пример:

грешка при изброяване
IO_ERROR,
DISK_ERROR,
МРЕЖОВА ГРЕШКА
;

Ключовата дума “enum” трябва винаги да се използва за определяне на типа на изброяване. Така че, когато искате да дефинирате тип на изброяване, трябва да използвате ключовата дума „enum“ преди това . След ключовата дума „enum“ трябва да използвате валиден идентификатор, за да дефинирате .

В горния пример компилаторът ще присвои IO_ERROR на интегралната стойност: 0, DISK_ERROR на интегралната стойност: 1 и NETWORK_ERROR на интегралната стойност: 2.  По подразбиране на първия enum-елемент винаги се присвоява стойността 0, на следващия enum-елемент се присвоява стойността 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.д., 9) от компилатора.

И така, сега разбирате как да дефинирате дефиниран от потребителя тип изброяване в C. Възможно ли е да декларираме променлива от тип enum (както можем да декларираме променлива от цял ​​тип)?  Да, така е! Можете да декларирате променливата enum, както следва:

enum Грешка Hw_Error;

Отново „enum“ е ключовата дума тук, „Error“ е типът на enum, а „Hw_Error“ е enum променлива.

Сега ще разгледаме следните примери, за да разберем различните употреби на enum:

  • Пример 1: Използване на дефиниция по подразбиране по подразбиране
  • Пример 2: Използване на дефиниция по избор
  • Пример 3: дефиниция на enum с помощта на константна експресия
  • Пример 4: обхват на изброяване

Пример 1: Използване на дефиниция по подразбиране

В този пример ще научите как да дефинирате типа на изброяване с постоянни стойности по подразбиране. Компилаторът ще се погрижи за присвояване на стойностите по подразбиране на елементите за изброяване. По-долу ще видите примерната програма и съответния изход.

#include
/ * Определете типа на изброяването * /
грешка при изброяване
IO_ERROR,
DISK_ERROR,
МРЕЖОВА ГРЕШКА
;
int main ()

enum Грешка Hw_Error; / * Създаване на enum променлива * /
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ул и 3rd enum елементи (i.д., IO_ERROR и NETWORK_ERROR, съответно), но ние пропуснахме изричната инициализация за 2nd и 4ти елементи. Сега отговорността на компилатора е да присвои стойностите по подразбиране на 2nd и 4ти enum елементи (i.д., DISK_ERROR и PRINT_ERROR, съответно). DISK_ERROR ще бъде присвоена на стойност 3, а PRINT_ERROR ще бъде присвоена на стойност 9. По-долу ще видите примерната програма и резултата.

#include
/ * Определете типа на изброяването - Персонализирана инициализация * /
грешка при изброяване
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: Определение на Enum с помощта на постоянен израз

В този пример ще научите как да използвате константния израз за дефиниране на константната стойност за елементите на изброяване.

#include
/ * Определете типа на изброяването - персонализирана инициализация с помощта на константния израз
тук се използва постоянен израз в случай на:
а. IO_ERROR и
б. МРЕЖОВА ГРЕШКА
Това е необичаен начин за определяне на елементите на преброяването; това обаче
програмата демонстрира, че този начин на инициализиране на елементи на преброяване е възможен в c.
* /
грешка при изброяване
IO_ERROR = 1 + 2 * 3 + 4,
DISK_ERROR,
NETWORK_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 Обхват

В този пример ще научите как прави правилото за обхват за enum. MACRO (#define) би могъл да се използва за дефиниране на константа вместо enum, но правилото за обхват не работи за MACRO.

#include
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 и макро

Преброяване Макро
Правилото за обхват е приложимо за изброяване. Правилото за обхват не е приложимо за макро.
Присвояването на стойност по подразбиране се извършва автоматично.

Enum е много полезен при дефинирането на голям брой константи. Компилаторът приема инициализация на постоянна стойност по подразбиране.

Стойностите на макроконстантата винаги трябва да се споменават изрично от програмиста.

Това може да бъде досаден процес за голям брой константи, тъй като програмистът винаги трябва да дефинира ръчно всяка константна стойност, докато дефинира макроса.

Заключение

Програмата enum в C може да се счита за незадължителен метод за самостоятелни програми или малки проекти, тъй като програмистите винаги могат да използват макрос вместо enum. Опитните програмисти обаче използват склонността да преброяват макроси за мащабни проекти за разработка на софтуер. Това помага при писането на чисти и четливи програми.

Как да използвам GameConqueror Cheat Engine в Linux
Статията обхваща ръководство за използването на GameConqueror cheat engine в Linux. Много потребители, които играят игри под Windows, често използват ...
Най-добрите емулатори на игрови конзоли за Linux
Тази статия ще изброи популярния софтуер за емулация на игрова конзола, наличен за Linux. Емулацията е слой за софтуерна съвместимост, който емулира х...
Най-добрите дистрибуции на Linux за игри през 2021 г
Операционната система Linux е изминала дълъг път от първоначалния си, прост, базиран на сървъра външен вид. Тази операционна система се подобри неимов...