[C] Speicherbelegung eines "enum"s

Herakles

Profifragensteller
Moin!

Ein enum hat offenbar IMMER die Größe von einem int, auf meinem System sind das 4 Byte. Hier mal ein Beweisprogramm:

Code:
#include <stdio.h>
int main(void){
        enum uga
        {
  		TEST1,
		TEST2,
		TEST3 = 0x1,
		TEST4,
		TEST5 = 0x8,
		TEST6,
		TEST7,
		TEST8 = 8,
		TEST9,
		TEST0
        } furz;
	printf("%d Bytes\n",sizeof(furz));
}

Es ist egal, wieviele Elemente ich in das enum packe oder wieviele ich mit vollkommen wahllosen Werte initialisiere, es bleibt einfach immer bei 4 Byte Speicherbelegung.

1. Habe ich das richtig getestet?
2. Wieso ist das so? Wie können endlos(?) viele verschiedene enum-Inhalte immer nur den Platz für ein int belegen?

Danke für Eure Tipps,
Herakles
 
Sorry, Yamagi, aber das verstehe ich nicht.

Nehmen wir an, ich packe eine Million Werte in so ein enum. Wo werden denn diese Million Werte im Speicher abgelegt? Die können unmöglich in einen Integer passen. Auch mit Nachdenken - ich check's nicht...

??? :confused: ???
 
Die Enum Symbole die du definierst werden vom Compiler durchnummeriert. Enums erfüllen den gleichen Zweck wie defines, so lange du in einem Enum weniger als 2^32 unterschiedliche Symbole definierst, reicht halt nun mal ein int um die durch zu nummerieren.
 
Zurück
Oben