Programowanie C

Jak używać enum w języku C

Jak używać enum w języku C
Program enum w języku programowania C służy do definiowania wartości stałych całkowych, co jest bardzo pomocne przy pisaniu czystych i czytelnych programów. Programiści zwykle używają wyliczania do definiowania nazwanych stałych całkowitych w swoich programach, aby zapewnić lepszą czytelność i łatwość konserwacji oprogramowania. W tym artykule szczegółowo omówimy enum.

Składnia

wyliczenie
Enumeration_Constant_Element-1,
Enumeration_Constant_Element-2,
Enumeration_Constant_Element-3,
… ,
Enumeration_Constant_Element-n,
;

Wartość domyślna Enumeration_Constant_Element-1 to 0, wartość Enumeration_Constant_Element-2 to 1, wartość Enumeration_Constant_Element-3 to 2, a wartość Enumeration_Constant_Element-n to (n-1).

Zanurz się głęboko w Enum

Teraz, ponieważ znamy składnię określającą typ wyliczenia, spójrzmy na przykład:

wyliczenie Błąd
IO_BŁĄD,
DISK_ERROR,
BŁĄD SIECI
;

Słowo kluczowe „enum” musi być zawsze używane do zdefiniowania typu wyliczenia. Tak więc za każdym razem, gdy chcesz zdefiniować typ wyliczenia, musisz wcześniej użyć słowa kluczowego „enum” . Po słowie kluczowym „enum” należy użyć prawidłowego identyfikatora, aby zdefiniować .

W powyższym przykładzie kompilator przypisze IO_ERROR do wartości całkowitej: 0, DISK_ERROR do wartości całkowitej: 1 i NETWORK_ERROR do wartości całkowitej: 2.  Domyślnie pierwszemu elementowi wyliczenia jest zawsze przypisywana wartość 0, następnemu elementowi wyliczenia jest przypisywana wartość 1 itd.

To domyślne zachowanie można w razie potrzeby zmienić, przypisując jawnie stałą wartość całkowitą w następujący sposób:

wyliczenie Błąd
IO_BŁĄD = 2,
DISK_ERROR,
BŁĄD_SIECI = 8 ,
PRINT_ERROR
;

W tym przypadku IO_ERROR jest jawnie przypisywany przez programistę do wartości 2, DISK_ERROR jest przypisywany do wartości 3 przez kompilator, NETWORK_ERROR jest jawnie przypisywany do wartości 8 przez programistę, a PRINT_ERROR jest przypisywany do następnego wartość całkowita poprzedniego elementu wyliczenia NETWORK_ERROR (i.mi., 9) przez kompilator.

Więc teraz rozumiesz, jak zdefiniować typ wyliczenia zdefiniowany przez użytkownika w C. Czy można zadeklarować zmienną typu enum (ponieważ możemy zadeklarować zmienną typu integer)?  Tak to jest! Możesz zadeklarować zmienną enum w następujący sposób:

wyliczenie Błąd Hw_Error;

Ponownie „wyliczenie” to słowo kluczowe, „Błąd” to typ wyliczenia, a „Hw_Error” to zmienna wyliczeniowa.

Przyjrzymy się teraz następującym przykładom, aby zrozumieć różne zastosowania enum:

  • Przykład 1: Domyślne użycie definicji wyliczenia
  • Przykład 2: Użycie niestandardowej definicji wyliczenia
  • Przykład 3: definicja wyliczenia przy użyciu wyrażenia stałego
  • Przykład 4: zakres wyliczenia

Przykład 1: Domyślne wyliczenie Definicja Użycie

W tym przykładzie dowiesz się, jak zdefiniować typ wyliczenia z domyślnymi wartościami stałymi. Kompilator zadba o przypisanie domyślnych wartości do elementów enum. Poniżej zobaczysz przykładowy program i odpowiadające mu wyjście.

#zawierać
/* Zdefiniuj typ wyliczenia */
wyliczenie Błąd
IO_BŁĄD,
DISK_ERROR,
BŁĄD SIECI
;
int main()

wyliczenie Błąd Hw_Error; /* Tworzenie zmiennej wyliczeniowej*/
printf("Ustawianie Hw_Error na IO_ERROR\n");
Hw_Error = IO_ERROR;
printf("Wartość Hw_Error = %d \n",Hw_Error);
printf("\nUstawianie Hw_Error na DISK_ERROR\n");
Hw_Error = DYSK_BŁĄD;
printf("Wartość Hw_Error = %d \n",Hw_Error);
printf("\nUstawianie Hw_Error na NETWORK_ERROR\n");
Hw_Error = BŁĄD_SIECI;
printf("Wartość Hw_Error = %d \n",Hw_Error);
zwróć 0;

Przykład 2: Niestandardowe użycie definicji wyliczenia

W tym przykładzie dowiesz się, jak zdefiniować typ wyliczenia za pomocą niestandardowej wartości stałej. Ten przykład pomoże Ci również zrozumieć, w jaki sposób można wykonać inicjalizację stałych niestandardowych w dowolnej losowej kolejności. W tym przykładzie wyraźnie zdefiniowaliśmy stałą wartość dla 1st i 3r & D wyliczenie elementów (i.mi., IO_ERROR i NETWORK_ERROR), ale pominęliśmy jawną inicjalizację dla 2znaleźć i 4ten elementy. Teraz obowiązkiem kompilatora jest przypisanie wartości domyślnych do 2znaleźć i 4ten wyliczenie elementów (i.mi., DISK_ERROR i PRINT_ERROR, odpowiednio). DISK_ERROR zostanie przypisany do wartości 3 a PRINT_ERROR zostanie przypisany do wartości 9. Poniżej zobaczysz przykładowy program i wyjście.

#zawierać
/* Zdefiniuj typ wyliczenia - Inicjalizacja niestandardowa*/
wyliczenie Błąd
IO_BŁĄD = 2,
DISK_ERROR,
BŁĄD_SIECI = 8,
PRINT_ERROR
;
int main()

/* Zadeklaruj zmienną wyliczeniową*/
wyliczenie Błąd Hw_Error;
printf("Ustawianie Hw_Error na IO_ERROR\n");
Hw_Error = IO_ERROR;
printf("Wartość Hw_Error = %d \n",Hw_Error);
printf("\nUstawianie Hw_Error na DISK_ERROR\n");
Hw_Error = DYSK_BŁĄD;
printf("Wartość Hw_Error = %d \n",Hw_Error);
printf("\nUstawianie Hw_Error na NETWORK_ERROR\n");
Hw_Error = BŁĄD_SIECI;
printf("Wartość Hw_Error = %d \n",Hw_Error);
printf("\nUstawianie Hw_Error na PRINT_ERROR\n");
Hw_Błąd = WYDRUK_BŁĄD;
printf("Wartość Hw_Error = %d \n",Hw_Error);
zwróć 0;

Przykład 3: Definicja wyliczenia przy użyciu wyrażenia stałego

W tym przykładzie dowiesz się, jak używać wyrażenia stałego do definiowania stałej wartości elementów wyliczenia.

#zawierać
/* Zdefiniuj typ wyliczenia - niestandardowa inicjalizacja za pomocą wyrażenia stałego
wyrażenie stałe jest tutaj używane w przypadku :
za. IO_ERROR i
b. BŁĄD SIECI
Jest to niezwykły sposób definiowania elementów wyliczenia; jednak to
program pokazuje, że ten sposób inicjalizacji elementów wyliczenia jest możliwy w c.
*/
wyliczenie Błąd
IO_ERROR = 1 + 2 * 3 + 4,
DISK_ERROR,
BŁĄD_SIECI = 2 == 2,
PRINT_ERROR
;
int main()

/* Zadeklaruj zmienną wyliczeniową*/
wyliczenie Błąd Hw_Error;
printf("Ustawianie Hw_Error na IO_ERROR\n");
Hw_Error = IO_ERROR;
printf("Wartość Hw_Error = %d \n",Hw_Error);
printf("\nUstawianie Hw_Error na DISK_ERROR\n");
Hw_Error = DYSK_BŁĄD;
printf("Wartość Hw_Error = %d \n",Hw_Error);
printf("\nUstawianie Hw_Error na NETWORK_ERROR\n");
Hw_Error = BŁĄD_SIECI;
printf("Wartość Hw_Error = %d \n",Hw_Error);
printf("\nUstawianie Hw_Error na PRINT_ERROR\n");
Hw_Błąd = WYDRUK_BŁĄD;
printf("Wartość Hw_Error = %d \n",Hw_Error);
zwróć 0;

Przykład 4: wyliczenie Zakres

W tym przykładzie dowiesz się, jak działa reguła określania zakresu dla enum. MAKRO (#define) mogło zostać użyte do zdefiniowania stałej zamiast wyliczenia, ale reguła zakresu nie działa dla MAKRO.

#zawierać
int main()

/* Zdefiniuj typ wyliczenia */
wyliczenie Błąd_1
IO_BŁĄD = 10,
DISK_ERROR,
BŁĄD_SIECI = 3,
PRINT_ERROR
;

/* Zdefiniuj typ wyliczenia w wewnętrznym zakresie*/
wyliczenie Błąd_1
IO_BŁĄD = 20,
DISK_ERROR,
BŁĄD_SIECI = 35,
PRINT_ERROR
;
/* Zadeklaruj zmienną wyliczeniową*/
wyliczenie Error_1 Hw_Error;
printf("Ustawianie Hw_Error na IO_ERROR\n");
Hw_Error = IO_ERROR;
printf("Wartość Hw_Error = %d \n",Hw_Error);
printf("\nUstawianie Hw_Error na DISK_ERROR\n");
Hw_Error = DYSK_BŁĄD;
printf("Wartość Hw_Error = %d \n",Hw_Error);
printf("\nUstawianie Hw_Error na NETWORK_ERROR\n");
Hw_Error = BŁĄD_SIECI;
printf("Wartość Hw_Error = %d \n",Hw_Error);
printf("\nUstawianie Hw_Error na PRINT_ERROR\n");
Hw_Błąd = WYDRUK_BŁĄD;
printf("Wartość Hw_Error = %d \n",Hw_Error);

zwróć 0;

Porównanie między wyliczeniem a makro

Wyliczenie Makro
Reguła określania zakresu ma zastosowanie do wyliczenia. Zasada określania zakresu nie ma zastosowania do makro for.
Domyślne przypisanie wartości Enum odbywa się automatycznie.

Enum jest bardzo pomocne przy definiowaniu dużej liczby stałych. Kompilator przyjmuje domyślną inicjalizację wartości stałej.

Wartości makrostałych muszą być zawsze wyraźnie wymienione przez programistę.

Może to być żmudny proces dla dużej liczby stałych, ponieważ programista musi zawsze ręcznie definiować każdą stałą wartość podczas definiowania Makro.

Wniosek

Program enum w C może być uważany za opcjonalną metodę dla samodzielnych programów lub małych projektów, ponieważ programiści zawsze mogą używać makra zamiast enum. Jednak doświadczeni programiści mają tendencję do używania wyliczenia zamiast makra w projektach programistycznych na dużą skalę. Pomaga to w pisaniu czystych i czytelnych programów.

Microsoft Sculpt Touch Wireless Mouse Review
I recently read about the Microsoft Sculpt Touch wireless mouse and decided to buy it. After using it for a while, I decided to share my experience wi...
AppyMouse On-screen Trackpad and Mouse Pointer for Windows Tablets
Tablet users often miss the mouse pointer, especially when they are habitual to using the laptops. The touchscreen Smartphones and tablets come with m...
Middle mouse button not working in Windows 10
The middle mouse button helps you scroll through long webpages and screens with a lot of data. If that stops, well you will end up using the keyboard ...