0Pricing
C Academy · Lezione

Definire enum

Crei valori denominati e leggibili.

Definire enum è una lezione C Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C Academy include 4 lezioni in totale.

Che cos'è un enum

Un'enumerazione (enum) è un tipo definito dall'utente che raggruppa un insieme di costanti intere denominate.

Invece di ricordare che 0 significa lunedì e 1 significa martedì, assegni a quei numeri nomi leggibili. In questo modo il codice è più chiaro e meno soggetto a errori.

Sintassi di base

Si dichiara un enum con la parola chiave enum, un nome di tag e un elenco di nomi racchiuso tra parentesi graffe.

Ogni nome diventa una costante utilizzabile ovunque sia previsto un intero.

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

I valori predefiniti iniziano da 0

Per impostazione predefinita, il primo nome vale 0 e ogni nome successivo vale uno in più del precedente.

Quindi, in enum Weekday, MON vale 0, TUE vale 1, WED vale 2 e così via.

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

Dichiarare una variabile enum

Una volta definito un tipo enum, può creare variabili di quel tipo.

La variabile contiene uno dei valori denominati. Internamente, è semplicemente un 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;
}

Perché gli enum migliorano la leggibilità

Confronti if (state == 2) con if (state == PAUSED).

La seconda forma si spiega da sola. Gli enum permettono al compilatore di tenere traccia del significato, mentre Lei legge valori denominati e chiari invece di numeri privi di contesto.

enum Status { RUNNING, PAUSED, STOPPED };

Usare gli enum con switch

Gli enum si combinano naturalmente con le istruzioni switch. Ogni valore denominato diventa un'etichetta case chiara.

È uno degli usi più comuni degli enum nel mondo reale.

#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;
}

Gli enum sono semplicemente interi

Le costanti enum sono intercambiabili con gli interi. Può eseguire operazioni aritmetiche e confronti con esse.

Questa flessibilità è utile, ma significa anche che C non Le impedirà di memorizzare un numero fuori dall'intervallo previsto.

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

Enum anonimi

Può omettere il nome del tag se Le servono solo le costanti e non un tipo denominato.

È un modo rapido per definire un gruppo di costanti intere correlate.

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

Convenzioni per i nomi

Per convenzione, i nomi delle costanti enum sono scritti in UPPER_CASE, come le macro.

Questo segnala ai lettori che il valore è una costante fissa. Il nome del tag usa spesso il CamelCase o il PascalCase.

enum TrafficLight { LIGHT_RED, LIGHT_YELLOW, LIGHT_GREEN };

Combinare con typedef

Scrivere enum Weekday ogni volta è prolisso. Un typedef consente di usare un nome breve.

Dopo il typedef può dichiarare variabili come Weekday today; senza la parola chiave enum.

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

Ambito delle costanti enum

I nomi delle costanti enum condividono lo stesso spazio dei nomi degli identificatori ordinari nel loro ambito.

Ciò significa che due enum nello stesso ambito non possono riutilizzare lo stesso nome di costante. Scelga nomi distinti per evitare conflitti.

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

Verifica rapida

Verifichi la Sua comprensione dei valori predefiniti degli enum.

Riepilogo

Un enum definisce costanti intere denominate. La prima vale 0 e ogni nome successivo vale uno in più, salvo diversa indicazione.

Gli enum rendono il codice più leggibile, si combinano bene con switch e possono essere abbreviati con typedef. Ora esploreremo i valori personalizzati e gli intervalli.

Domande Frequenti

La lezione «Definire enum» è gratuita?

Sì — il testo completo di «Definire enum» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C Academy, passa a CoddyKit PRO. Il corso C Academy include 4 lezioni in totale.

Cosa imparerò in «Definire enum»?

Crei valori denominati e leggibili. Eserciti C Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare C Academy?

Non è richiesta alcuna esperienza precedente. C Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Definire enum»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione C Academy?

Sì. Ogni lezione C Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Definire enum
  2. Valori e intervalli degli enum
  3. Variabili const
  4. Costanti #define
← Torna a C Academy