Enum Variable oder int?
-
Aber das ist doch der Nutzen von Enum selbst.
Das verstehe ich soweit.
Aber ob ich jetzt int aktuell oder enum Jahr aktuell definiere und initialisiere hat nicht wirklich einen Unterschied in der Übersichtlichkeit.Gibt es sonst keine Vorteile?
-
DarkShadow hat die 2 Vorteile genannt: verständlicherer Source-Code und automatische Fortführung der Werte. Was erwartest du mehr?
Sollte jemand anderes mit deinem Code arbeiten oder du ihn dir in 2 Jahren nochmal anschauen, werden Enums wesentlich hilfreicher sein als irgendwelche Zahlen, dessen Bedeutung bzw. Ursprung erst herausgefunden werden muss.
-
AlexC schrieb:
Aber ob ich jetzt int aktuell oder enum Jahr aktuell definiere und initialisiere hat nicht wirklich einen Unterschied in der Übersichtlichkeit.
Doch. Das ist so ähnlich wie bei den Werten auch. Wenn sich jemand deine Klassendeklaration durchschaut und "int monat" sieht, woher soll er wissen, dass du da in Wirklichkeit Werte aus einem enum speicherst? Und wie verhinderst du, dass falsche Werte gespeichert werden? Bei int monat hindert dich der Compiler nicht daran, aktuell = 235 zu schreiben.
-
Mechanics schrieb:
AlexC schrieb:
Aber ob ich jetzt int aktuell oder enum Jahr aktuell definiere und initialisiere hat nicht wirklich einen Unterschied in der Übersichtlichkeit.
Bei int monat hindert dich der Compiler nicht daran, aktuell = 235 zu schreiben.
Bei Monate monat auch nicht, offiziell ist das UB.
-
Nathan schrieb:
Mechanics schrieb:
AlexC schrieb:
Aber ob ich jetzt int aktuell oder enum Jahr aktuell definiere und initialisiere hat nicht wirklich einen Unterschied in der Übersichtlichkeit.
Bei int monat hindert dich der Compiler nicht daran, aktuell = 235 zu schreiben.
Bei Monate monat auch nicht, offiziell ist das UB.
Naja, wenn du es direkt hinschreibst ist es erstmal ein Compilerfehler und darums gehts ja. Natürlich kann man das immer noch casten, aber das muss man erstmal explizit machen und dann ist man selber schuld.
-
Mechanics schrieb:
Nathan schrieb:
Mechanics schrieb:
AlexC schrieb:
Aber ob ich jetzt int aktuell oder enum Jahr aktuell definiere und initialisiere hat nicht wirklich einen Unterschied in der Übersichtlichkeit.
Bei int monat hindert dich der Compiler nicht daran, aktuell = 235 zu schreiben.
Bei Monate monat auch nicht, offiziell ist das UB.
Naja, wenn du es direkt hinschreibst ist es erstmal ein Compilerfehler und darums gehts ja. Natürlich kann man das immer noch casten, aber das muss man erstmal explizit machen und dann ist man selber schuld.
Willkommen in der Welt der enum ohne class: http://ideone.com/EmjUNv
-
Was für ein Compiler? Ich krieg mit Visual Studio einen Compilerfehler.
-
Mechanics schrieb:
Was für ein Compiler? Ich krieg mit Visual Studio einen Compilerfehler.
Ideone verwendet glaub ich intern für C auch den gcc.
Hab grad leider keinen Standard zur Hand.
-
Könnte sogar sein, dass es laut Standard erlaubt ist, der Visual Studio Compiler verhält sich bei enums nicht immer standardkonform. Das wär dann aber auf jeden Fall eine sinnvolle Erweiterung von MS
-
Mechanics schrieb:
Könnte sogar sein, dass es laut Standard erlaubt ist, der Visual Studio Compiler verhält sich bei enums nicht immer standardkonform. Das wär dann aber auf jeden Fall eine sinnvolle Erweiterung von MS
Naja, UB kann ja auch eine simple Compilerfehlermeldung sein.