Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke
Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke
Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>E<strong>in</strong>e</strong> <strong>E<strong>in</strong>führung</strong> <strong>in</strong> <strong>die</strong> Informatik <strong>und</strong> <strong>die</strong> <strong>Programmiersprache</strong> C<br />
16 Enums<br />
Mit dem Aufzählungstyp (Enum) können Konstanten def<strong>in</strong>iert werden. E<strong>in</strong> enum ist e<strong>in</strong> <strong>in</strong>t, der<br />
vordef<strong>in</strong>ierte Konstanten aufnehmen kann. Obwohl e<strong>in</strong> enum eigentlich e<strong>in</strong> eigener Datentyp ist,<br />
können Enums <strong>und</strong> <strong>in</strong>t gemischt werden.<br />
Wenn Enumkonstanten bei der Def<strong>in</strong>iton ke<strong>in</strong> Wert zugewiesen wird, werden sie fortlaufend numeriert,<br />
beg<strong>in</strong>nend bei 0 oder dem Wert des Vorgängers plus 1.<br />
Beispiel, Enum für <strong>die</strong> Wochentage:<br />
enum Tag {Mo, Di, Mi, Do, Fr, Sa, So};<br />
enum Tag Heute, Morgen;<br />
Heute = Mi;<br />
if (Heute == Do) {<br />
Morgen = Fr;<br />
}<br />
/* Leider auch moeglich */<br />
<strong>in</strong>t Zahl;<br />
enum Tag Gestern;<br />
Zahl = Mo; /* Enumkonstante an <strong>in</strong>teger zuweisen */<br />
Gestern = 77; /* Integer an Enum zuweisen */<br />
Gestern = Zahl / 5; /* Integer an Enum zuweisen */<br />
Gestern = Gestern + Sa / Di % 17; /* Kompleter Mix */<br />
Beispiel, Enum für Fehlercodes:<br />
enum Fehlercode {<br />
NoError = 0, /* Hat den Wert 0 */<br />
SyntaxError, /* Hat den Wert 1 */<br />
RuntimeError, /* Hat den Wert 2 */<br />
FileError = 10, /* Hat den Wert 10 */<br />
ReadError, /* Hat den Wert 11 */<br />
WriteError = FileError + 5; /* Hat den Wert 15 */<br />
LastError = 999; /* Hat den Wert 999 */<br />
};<br />
Die Namen der Enumkonstanten gelten über alle Enums. Wenn e<strong>in</strong> Name bereits <strong>in</strong> e<strong>in</strong>em Enum<br />
vergeben wurde, kann er <strong>in</strong> e<strong>in</strong>em anderen Enum nicht nochmals verwendet werden.<br />
/* Fehler, Do <strong>und</strong> Mi bereits <strong>in</strong> Enum Tag verwendet!!! */<br />
enum Tonleiter {Do, Re, Mi, Fa, So, La, Ti};<br />
Enumkonstanten können <strong>die</strong> Lesbarkeit e<strong>in</strong>es Programmes stark erhöhen <strong>und</strong> auch helfen, Fehler zu<br />
vermeiden.<br />
Bei der Ausgabe von Enums mit pr<strong>in</strong>tf() wird jedoch der numerische Wert, <strong>und</strong> nicht der Name<br />
ausgegeben. Wenn man den Namen ausgeben möchte, muss man e<strong>in</strong>e eigene Ausgabefunktion<br />
schreiben. (Mit e<strong>in</strong>em Array oder e<strong>in</strong>em switch).<br />
Beispiel:<br />
enum Tag {Mo, Di, Mi, Do, Fr, Sa, So};<br />
char *Translate[] = {"Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"};<br />
enum Tag Heute = Di;<br />
pr<strong>in</strong>tf("Heute ist %s !", Translate[Heute]); /* Annahme: ke<strong>in</strong>e Ungültigen Werte*/<br />
Gedruckt am 11.09.2008 13:04:00 Letzte Änderung am: 11. September 2008 Version 2.4, I. Oesch 56/147