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
- Definire enum
- Valori e intervalli degli enum
- Variabili const
- Costanti #define