0Pricing
C Academy · Leçon

Valeurs et plages d’énumération

Contrôlez les entiers sous-jacents.

Valeurs et plages d’énumération est une leçon C Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C Academy comprend 4 leçons au total.

Attribuer des valeurs explicites

Vous n’êtes pas limité à la suite 0, 1, 2 par défaut. Vous pouvez attribuer n’importe quel entier à un nom avec =.

C’est utile lorsque les nombres doivent correspondre à un système externe, comme les codes d’état HTTP.

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

Afficher des valeurs personnalisées

Une fois attribués, ces nombres exacts sont ceux qui sont stockés et affichés.

Ici, les noms de l’énumération correspondent directement aux codes 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;
}

Mélanger valeurs explicites et valeurs par défaut

Si vous définissez certaines valeurs et en laissez d’autres vides, chaque nom vide continue le comptage à partir de la valeur précédente.

Ainsi, un nom placé juste après = 10 vaut 11, puis le suivant 12, et ainsi de suite.

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

Commencer à un

Une astuce courante consiste à faire commencer la première valeur à 1 plutôt qu’à 0, afin que la numérotation corresponde au comptage humain.

Ici, MON vaut 1, et les jours vont donc de 1 à 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;
}

Les valeurs en double sont autorisées

Deux noms d’énumération peuvent partager la même valeur entière. C n’exige pas qu’ils soient uniques.

Cela sert parfois à créer des alias pour un même concept.

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

Valeurs négatives

Les valeurs d’énumération peuvent également être négatives. Ce sont des entiers signés.

Cela permet d’exprimer des codes d’erreur inférieurs à zéro aux côtés d’un intervalle neutre ou positif.

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

Astuce du marqueur COUNT

Si vous énumérez les éléments en commençant à 0 et ajoutez un dernier nom, ce dernier nom vaut le nombre d’éléments.

Cette astuce avec COUNT fournit automatiquement la taille, même après l’ajout de nouveaux éléments.

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

Énumérations comme indices de tableau

Comme les valeurs d’énumération sont des entiers, elles constituent d’excellents indices de tableau.

Grâce à l’astuce COUNT, vous pouvez donner au tableau exactement la bonne taille et l’indexer avec des noms lisibles.

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

Le type sous-jacent

En C standard, les valeurs d’énumération sont stockées dans un type entier choisi par le compilateur, généralement int.

Le type est suffisamment large pour contenir toutes les valeurs que vous définissez ; les constantes grandes ou négatives tiennent donc également.

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

Aucune vérification intégrée des intervalles

C ne vous empêche pas d’attribuer à une variable d’énumération une valeur qui ne figure pas dans la liste.

L’affectation ci-dessous est compilée et exécutée. Il vous revient de maintenir les valeurs valides.

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

Parcourir un intervalle

Lorsqu’une énumération va de 0 à un marqueur COUNT, vous pouvez parcourir chaque valeur avec un simple for.

Cela parcourt chaque élément défini jusqu’au nombre d’éléments, sans l’inclure.

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

Vérification rapide

Raisonnez sur des valeurs d’énumération mélangées.

Récapitulatif

Vous pouvez attribuer des valeurs explicites aux énumérations, les mélanger avec des valeurs par défaut, répéter des valeurs et utiliser des valeurs négatives.

L’astuce du marqueur COUNT suit automatiquement la taille de la liste, et les énumérations sont d’excellents indices de tableau. Souvenez-vous-en : C n’effectue aucune vérification d’intervalle ; vous devez donc valider vous-même les valeurs.

Questions Fréquemment Posées

La leçon « Valeurs et plages d’énumération » est-elle gratuite ?

Oui — le texte complet de « Valeurs et plages d’énumération » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C Academy, passe à CoddyKit PRO. Le cours C Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Valeurs et plages d’énumération » ?

Contrôlez les entiers sous-jacents. Tu pratiques C Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer C Academy ?

Aucune expérience préalable n'est requise. C Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Valeurs et plages d’énumération » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon C Academy ?

Oui. Chaque leçon C Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Définir des énumérations
  2. Valeurs et plages d’énumération
  3. Variables const
  4. Constantes #define
← Retour à C Academy