C Academy · Lekcja

Definiowanie enumów

Utworzy Pan/Pani czytelne nazwane wartości.

Lekcja 1 z 413 kroki

Definiowanie enumów to bezpłatna lekcja C Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C Academy zawiera 4 lekcji w sumie.

Czym jest enum?

Wyliczenie (enum) to typ definiowany przez użytkownika, który grupuje zbiór nazwanych stałych całkowitych.

Zamiast pamiętać, że 0 oznacza poniedziałek, a 1 wtorek, nadają Państwo tym liczbom czytelne nazwy. Dzięki temu kod jest bardziej przejrzysty i trudniej popełnić w nim błąd.

Podstawowa składnia

Wyliczenie deklaruje się za pomocą słowa kluczowego enum, nazwy znacznika i listy nazw ujętej w nawiasy klamrowe.

Każda nazwa staje się stałą, której można używać wszędzie tam, gdzie oczekiwana jest liczba całkowita.

enum Weekday { MON, TUE, WED, THU, FRI };

Wartości domyślne zaczynają się od 0

Domyślnie pierwsza nazwa ma wartość 0, a każda kolejna wartość jest o jeden większa od poprzedniej.

Dlatego w enum Weekday MON ma wartość 0, TUE ma wartość 1, WED ma wartość 2 i tak dalej.

#include <stdio.h>
enum Weekday { MON, TUE, WED, THU, FRI };
int main(void) {
    printf("%d %d %d\n", MON, TUE, WED);
    return 0;
}

Deklarowanie zmiennej typu enum

Po utworzeniu typu enum można tworzyć zmienne tego typu.

Zmienna przechowuje jedną z nazwanych wartości. W rzeczywistości jest to po prostu int.

#include <stdio.h>
enum Weekday { MON, TUE, WED, THU, FRI };
int main(void) {
    enum Weekday today = WED;
    printf("today = %d\n", today);
    return 0;
}

Dlaczego enum zwiększa czytelność

Proszę porównać if (state == 2) z if (state == PAUSED).

Drugi zapis wyjaśnia swoje znaczenie samodzielnie. Enum pozwala kompilatorowi śledzić znaczenie wartości, a Państwu czytać czyste, nazwane wartości zamiast zagadkowych liczb.

enum Status { RUNNING, PAUSED, STOPPED };

Używanie enum z switch

Typ enum naturalnie współpracuje z instrukcjami switch. Każda nazwana wartość staje się czytelną etykietą przypadku.

To jedno z najczęstszych praktycznych zastosowań enum.

#include <stdio.h>
enum Status { RUNNING, PAUSED, STOPPED };
int main(void) {
    enum Status s = PAUSED;
    switch (s) {
        case RUNNING: printf("running\n"); break;
        case PAUSED:  printf("paused\n");  break;
        case STOPPED: printf("stopped\n"); break;
    }
    return 0;
}

Enum to tylko liczby całkowite

Stałe enum można stosować zamiennie z liczbami całkowitymi. Można wykonywać na nich działania arytmetyczne i porównania.

Ta elastyczność jest przydatna, ale oznacza również, że C nie powstrzyma Państwa przed zapisaniem liczby spoza dozwolonego zakresu.

#include <stdio.h>
enum Level { LOW, MID, HIGH };
int main(void) {
    enum Level next = LOW + 1;
    printf("%d\n", next);
    return 0;
}

Nienazwane enum

Można pominąć nazwę znacznika, jeśli potrzebne są tylko stałe, a nie nazwany typ.

To szybki sposób na zdefiniowanie grupy powiązanych stałych całkowitych.

#include <stdio.h>
enum { RED, GREEN, BLUE };
int main(void) {
    printf("%d %d %d\n", RED, GREEN, BLUE);
    return 0;
}

Konwencje nazewnictwa

Zgodnie z konwencją nazwy stałych enum zapisuje się wielkimi literami i z podkreśleniami, podobnie jak makra.

Sygnalizuje to czytelnikom, że wartość jest stałą. Nazwa znacznika często używa zapisu CamelCase lub PascalCase.

enum TrafficLight { LIGHT_RED, LIGHT_YELLOW, LIGHT_GREEN };

Łączenie z typedef

Zapisywanie enum Weekday w każdym miejscu jest rozwlekłe. typedef pozwala używać krótkiej nazwy.

Po użyciu typedef można deklarować zmienne jako Weekday today;, bez słowa kluczowego enum.

#include <stdio.h>
typedef enum { MON, TUE, WED } Weekday;
int main(void) {
    Weekday d = TUE;
    printf("%d\n", d);
    return 0;
}

Zakres stałych enum

Nazwy stałych enum współdzielą przestrzeń nazw ze zwykłymi identyfikatorami w swoim zakresie.

Oznacza to, że dwa enum w tym samym zakresie nie mogą używać ponownie tej samej nazwy stałej. Należy wybierać różne nazwy, aby uniknąć konfliktów.

enum A { OPEN, CLOSED };
enum B { LOCKED, UNLOCKED };

Szybkie sprawdzenie

Proszę sprawdzić zrozumienie wartości domyślnych enum.

Podsumowanie

Enum definiuje nazwane stałe całkowite. Pierwsza ma wartość 0, a każda kolejna jest o jeden większa, chyba że zostanie to zmienione.

Enum zwiększa czytelność kodu, dobrze współpracuje z switch i można go skrócić za pomocą typedef. Następnie poznamy własne wartości i zakresy.

Bezpłatny start

Ucz się C dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
39
Lekcje
144

Często zadawane pytania

Czy lekcja „Definiowanie enumów” jest bezpłatna?

Tak — pełny tekst „Definiowanie enumów” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C Academy, przejdź na CoddyKit PRO. Kurs C Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Definiowanie enumów”?

Utworzy Pan/Pani czytelne nazwane wartości. Ćwiczysz C Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć C Academy?

Nie wymagamy żadnego doświadczenia. C Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Definiowanie enumów”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji C Academy?

Tak. Każda lekcja C Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Definiowanie enumów
  2. Wartości enumów i zakresy
  3. Zmienne const
  4. Stałe #define
← Powrót do C Academy