Supposez que vous deviez écrire un programme pour un distributeur automatique de jus de fruits. L'ensemble des fruits n'est pas un type prédéfini de C, comment faire ?
Une solution serait de décider d'un codage arbitraire des fruits par des entiers : orange = 1, citron = 2, etc. L'inconvénient est de contraindre le programmeur à rappeler par des commentaires la signification de chacun de ces codes, faute de quoi le programme deviendrait illisible.
De plus, le compilateur ne pourra faire aucune vérification quant à l'emploi de ces valeurs. Il sera donc possible d'exécuter, sans que cela soit sanctionné au niveau de la compilation, des instructions absurdes, comme l'addition d'un fruit et d'une somme d'argent.
C (ainsi que C++, Pascal, ADA, etc.) autorise la définition du type ``fruits'', par simple énumération des fruits qui nous intéressent :
La forme générale d'une définition de type énuméré est la suivante :
typedef enum { ENUMERATION DES ELEMENTS } NOMTYPE;