typedef enum, assignant une valeur à l'intérieur

de la compilation avec gcc C99

J'ai été en utilisant les énumérations pour un certain temps maintenant. Cependant, je suis en utilisant un exemple de code pour développer mon application. Et je suis tombé sur un code de ce genre. J'ai été informé de ce est les meilleures pratiques dans l'utilisation lors de l'utilisation des enums. Mais je ne vois pas en quoi cela a des avantages.

typedef enum {
    TYPE_DATE,
    TYPE_TIME,
    TYPE_MONEY,

    TYPE_COUNT,
    TYPE_UNKNOWN = TYPE_COUNT
} string_type_e;

Pourquoi les TYPE_COUNT et pourquoi attribuer TYPE_COUNT à TYPE_UNKNOWN?

Un grand merci pour toutes les suggestions,

source d'informationauteur ant2009