0Pricing
C Academy · Lezione

Valori e intervalli degli enum

Controlli gli interi sottostanti.

Valori e intervalli degli enum è una lezione C Academy gratuita su CoddyKit. Questa è la lezione 2 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.

Assegnare valori espliciti

Non è obbligato a usare la sequenza predefinita 0, 1, 2. Può assegnare qualsiasi intero a un nome usando =.

È utile quando i numeri devono corrispondere a un sistema esterno, come i codici di stato HTTP.

enum Http { OK = 200, NOT_FOUND = 404, ERROR = 500 };

Stampare valori personalizzati

Una volta assegnati, vengono memorizzati e stampati proprio quei numeri.

Qui i nomi dell'enum corrispondono direttamente ai codici HTTP standard.

#include <stdio.h>
enum Http { OK = 200, NOT_FOUND = 404, ERROR = 500 };
int main(void) {
    printf("%d %d\n", OK, NOT_FOUND);
    return 0;
}

Combinare valori espliciti e predefiniti

Se imposta alcuni valori e ne lascia altri vuoti, ogni nome vuoto continua il conteggio dal valore precedente.

Quindi un nome subito dopo = 10 vale 11, poi 12 e così via.

#include <stdio.h>
enum N { A = 10, B, C, D = 100, E };
int main(void) {
    printf("%d %d %d %d %d\n", A, B, C, D, E);
    return 0;
}

Iniziare da uno

Un espediente comune consiste nel fare in modo che il primo valore sia 1 invece di 0, così la numerazione corrisponde al conteggio umano.

Qui MON vale 1, quindi i giorni vanno da 1 a 7.

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

I valori duplicati sono consentiti

Due nomi enum possono condividere lo stesso valore intero. C non richiede che siano univoci.

A volte si usa questa possibilità per creare alias dello stesso concetto.

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

Valori negativi

I valori enum possono essere anche negativi. Sono interi con segno.

In questo modo si possono rappresentare codici di errore inferiori a zero insieme a un intervallo neutro o positivo.

#include <stdio.h>
enum Temp { COLD = -1, NORMAL = 0, HOT = 1 };
int main(void) {
    printf("%d %d %d\n", COLD, NORMAL, HOT);
    return 0;
}

Un espediente con il sentinel COUNT

Se elenca gli elementi iniziando da 0 e aggiunge un nome finale, quest'ultimo equivale al numero di elementi.

Questo espediente con COUNT fornisce automaticamente la dimensione, anche dopo l'aggiunta di nuovi elementi.

#include <stdio.h>
enum Fruit { APPLE, PEAR, KIWI, FRUIT_COUNT };
int main(void) {
    printf("%d fruits\n", FRUIT_COUNT);
    return 0;
}

Enum come indici di array

Poiché i valori enum sono interi, sono ottimi indici per gli array.

Insieme all'espediente COUNT, può dimensionare un array esattamente e indicizzarlo con nomi leggibili.

#include <stdio.h>
enum Fruit { APPLE, PEAR, KIWI, FRUIT_COUNT };
int main(void) {
    int stock[FRUIT_COUNT] = {5, 3, 8};
    printf("%d\n", stock[PEAR]);
    return 0;
}

Il tipo sottostante

Nel C standard, i valori enum vengono memorizzati in un tipo intero scelto dal compilatore, in genere int.

Il tipo è abbastanza grande da contenere ogni valore definito, quindi anche le costanti grandi o negative possono essere rappresentate.

#include <stdio.h>
enum Big { SMALL = 0, LARGE = 1000000 };
int main(void) {
    printf("%d\n", LARGE);
    return 0;
}

Nessun controllo dell'intervallo integrato

C non impedisce di assegnare a una variabile enum un valore che non appartiene all'elenco.

L'assegnazione seguente viene compilata ed eseguita. Spetta a Lei mantenere validi i valori.

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

Iterare su un intervallo

Quando un enum va da 0 a un sentinel COUNT, può scorrere ogni valore con un semplice for.

In questo modo itera su ogni elemento definito fino al conteggio, escluso quest'ultimo.

#include <stdio.h>
enum Fruit { APPLE, PEAR, KIWI, FRUIT_COUNT };
int main(void) {
    for (int f = APPLE; f < FRUIT_COUNT; f++)
        printf("%d ", f);
    printf("\n");
    return 0;
}

Verifica rapida

Ragioni sui valori enum combinati.

Riepilogo

Può assegnare valori enum espliciti, combinarli con quelli predefiniti, ripetere i valori e usare valori negativi.

L'espediente del sentinel COUNT tiene automaticamente traccia della dimensione dell'elenco e gli enum funzionano molto bene come indici di array. Ricordi: C non esegue alcun controllo dell'intervallo, quindi deve convalidare autonomamente i valori.

Domande Frequenti

La lezione «Valori e intervalli degli enum» è gratuita?

Sì — il testo completo di «Valori e intervalli degli 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 «Valori e intervalli degli enum»?

Controlli gli interi sottostanti. 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 2 di 4.

Quanto tempo richiede la lezione «Valori e intervalli degli 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