Comment Enum alloue-t-il de la mémoire sur C?

J’essaie de travailler avec C et Assembly (intelx8086).

J’utilise aussi une classe qu’un de mes amis m’a donnée avec un

typedef enum data_10 {a=0,b=7,c=10,} data_10_type; 

Je veux travailler avec cette classe au niveau du bit (AKA le construit / le détruit sur Assembly). Ma question est, combien de mémoire prend “enum”?

Bien que cela puisse varier d’un compilateur à l’autre, enum prend généralement la même taille qu’un int . Pour être sûr, vous pouvez toujours utiliser sizeof( data_10_type );

Pourquoi ne l’imprimez-vous pas?

 /* C99 */ #include  typedef enum { a = 0, b = 7, c = 10 } data_10_type; printf("%zu\n", sizeof(data_10_type)); 

Les identificateurs dans une liste d’énumérateurs sont déclarés comme des constantes de type int ( C11 §6.7.2.2 Spécificateurs d’énumération ), donc sizeof(data_10_type) est souvent égal à sizeof(int) , mais ce n’est pas nécessaire!

BTW, si vous voulez avoir une taille en bits, utilisez simplement la constante CHAR_BIT (définie dans ), qui indique le nombre de bits dans un seul octet).

 /* C99 */ #include  #include  typedef enum { a = 0, b = 7, c = 10 } data_10_type; printf("%zu\n", sizeof(data_10_type) * CHAR_BIT); 

Une enum ne prend pas vraiment de mémoire du tout; il est compris par le compilateur et les bons numéros sont utilisés lors de la compilation. C’est un int, dont la taille dépend de votre système.