Definiowanie enumów
Utworzy Pan/Pani czytelne nazwane wartości.
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.
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
- Definiowanie enumów
- Wartości enumów i zakresy
- Zmienne const
- Stałe #define