enum

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
SeriK00
Beiträge: 34
Registriert: Fr Mai 15, 2009 12:15 pm

enum

Beitrag von SeriK00 » Do Jun 04, 2009 10:51 am

/* enum2.c */
#include <stdio.h>
#include <stdlib.h>
Guten Tag,
ich habe jetzt 3 Möglichkeiten um enums zu definieren realisiert. Alle funktioonieren. Aber wo liegt jetzt der genau Unterschied?

1.möglichkeit
Wird diese möglichkeit benutzt, um mehrere variaablen von type enum zu deklarieren?
enum farben test;
enum farben test2;
enum farben test3;

2. Möglichkeit
Hier gibt es nur eine Variable

3. Wo liegen die Vorteile einer typedef?
Hier kann ich ja auch mehrere Variablen von Type enum deklarieren?

Code: Alles auswählen

//1. Möglichkeit
//enum farben
//{
//	blau,
//	geld,
//	rot,
//};
//enum farben test;

//2.Möglichkeit
//enum
//{
//	blau,
//	geld,
//	rot,
//}test;

//3. Möglichkeit
typedef enum
{
	blau,
	geld,
	rot,
}auswahl;
auswahl test;

int main (void)
{
	unsigned int eingabe;
	printf("\nBitte zahl eingebe: ");
	scanf("%d", &eingabe);
	test = eingabe;
	switch(test)
	{
	case blau:
		puts("\nblau");
		break;
	case geld:
		puts("\ngeld");
		break;
	case rot:
		puts("\nrot");
		break;
	default:
		puts("\nende");
	}
	return 0;
}
Windows XP Prof
Visual Studion 2005
Keil µVision 3

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: enum

Beitrag von Xin » Do Jun 04, 2009 12:10 pm

SeriK00 hat geschrieben:ich habe jetzt 3 Möglichkeiten um enums zu definieren realisiert. Alle funktioonieren. Aber wo liegt jetzt der genau Unterschied?

1.möglichkeit
Wird diese möglichkeit benutzt, um mehrere variaablen von type enum zu deklarieren?
enum farben test;
enum farben test2;
enum farben test3;
Hier definierst Du Variablen vom Typ 'enum farben'.
enum farben wird hier nicht definiert, das bedeutet, dass Du enum farben bereits zuvor definiert haben musst.
SeriK00 hat geschrieben:2. Möglichkeit
Hier gibt es nur eine Variable
hier definierst(!= deklarieren) Du, was ein enum farben ist und definierst weiterhin eine Variable. Du könntest auch mehrere Variablen durch Kommata getrennt definieren.
SeriK00 hat geschrieben:3. Wo liegen die Vorteile einer typedef?
Hier kann ich ja auch mehrere Variablen von Type enum deklarieren?
Hier definierst Du einen eigenen Typen-Namen für die enum. Du brauchst also in dem Fall nicht mehr enum farben zu schreiben, sondern kannst Deinen eigenen Typennamen stattdessen verwenden.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: enum

Beitrag von fat-lobyte » Do Jun 04, 2009 12:22 pm

Erwähnt sei noch, dass man auch "anonyme" enums deklarieren kann, die man dann nicht mehr ansprechen kann.
Die Nützlichkeit liegt darin, dass man die Member des Enums sehr wohl ansprechen kann.
In Verbindung mit der Tatsache dass Enum-Werte eigentlich Integer Werte sind kann man dann sowas machen:

Code: Alles auswählen

struct Message
{
    enum { header_length = 4 };
};

std::cout<<"Der Header der Nachricht ist "<<Message::header_length<<" bytes gross.\n";
Haters gonna hate, potatoes gonna potate.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: enum

Beitrag von Xin » Do Jun 04, 2009 1:06 pm

fat-lobyte hat geschrieben:In Verbindung mit der Tatsache dass Enum-Werte eigentlich Integer Werte sind kann man dann sowas machen:

Code: Alles auswählen

struct Message
{
    enum { header_length = 4 };
};

std::cout<<"Der Header der Nachricht ist "<<Message::header_length<<" bytes gross.\n";
Okay... und wenn die Message::item_size auch 4 groß sein soll?

Kann es sein, dass hier enums für Dinge missbraucht werden, die als (static int const) gefragt wären?
(und nebenher einen Anfänger mit Informationen verwirren, die er noch gar nicht benötigt?)
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: enum

Beitrag von fat-lobyte » Fr Jun 05, 2009 5:07 pm

Xin hat geschrieben:Okay... und wenn die Message::item_size auch 4 groß sein soll?
Ich sehe kein Problem darin.
Xin hat geschrieben:Kann es sein, dass hier enums für Dinge missbraucht werden, die als (static int const) gefragt wären?
Das stimmt. Aber erstens ist es einfach zu denklarieren, einfach anzusprechen und außerdem habe ich bei static const int angst, dass das tatsächlich als
Variable gespeichert wird, und dementsprechend abgerufen werden muss. So deklariert sollte es direkt in den Opcodes landen...
Ist nur so ein kleiner Trick aber ich verwende ihn gerne.
Xin hat geschrieben:(und nebenher einen Anfänger mit Informationen verwirren, die er noch gar nicht benötigt?)
Stimmt, das gehört eigentlich nicth hierher.
Haters gonna hate, potatoes gonna potate.

Antworten