06.10.2013 Aufrufe

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

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!