switch(...)
-
Hi
Als ich soeben im Internet ein wenig über "switch(...)" recherchiert habe, ist mir etwas aufgefallen. In verschiedenen Tutorials wird nach dem Rumpf von switch mal ein Semikolon gesetzt und mal wieder weggelassen.
(Siehe:
http://tutorial.schornboeck.net/switch.htm
http://www.volkard.de/vcppkold/switch.html )int n = 0; // Variante 1 ohne Semikolon switch(n){ case 0: break; } // Variante 2 mit Semikolon switch(n){ case 0: break; };Mein Compiler (VS2005) akzeptiert in der Tat beide Varianten.
Nun meine Frage, welche ist "richtiger" und warum sind eigentlich beide möglich?
-
Da gehört dein Semikolon hin.
Kompilieren tut das weil ein alleinstehendes Semikolon eine leere Anweisung darstellt und das gültiges C++ ist.
Du kannst z.B. auch int i = 0;; schreiben.
-
Daraus ergeben sich gleich drei Lektionen (die imho auch wichtig sind)
1. Nur weil ein Compiler etwas compiliert muß das noch lange nicht richtig sein. (imho einer der größten Fehlannahmen die vor allem unter Anfägern weit verbreitet ist)
2. Tutorials sind zwar eine gute Sache und fürs Lernen sehr hilreich, aber sie ersetzen keine Referenzliteratur. (Damit will ich die Arbeit der Leute auf keinen Fall heruntermachen)
3. Wer ernsthaft C++ lernen will kommt früher oder später um _das_ Referenzwerk einfach nicht herum (die C++ programmiersprache von Bjarne Stroustrup). Da steht es z.B. auch richtig drin mit dem Semikolons

-
Danke für die Info.

-
Mag sein, dass es so im Struppi steht, im Standard steht es aber nicht. Somit würde ich sagen, dass das Semikolon da unnötig ist.
-
Braunstein schrieb:
Mag sein, dass es so im Struppi steht, im Standard steht es aber nicht. Somit würde ich sagen, dass das Semikolon da unnötig ist.
Ich glaube es war gemeint, dass im Struppi drinsteht, dass das Semikolon da überflüssig ist.
-
Wenn das so gemeint war, ist es ja OK.
Ich hatte das hierlolz schrieb:
Da gehört dein Semikolon hin....
halt so interpretiert, dass ein Semikolon erforderlich sei.
-
Wird eh wegoptimiert.
-
Braunstein schrieb:
Wenn das so gemeint war, ist es ja OK.
Ich hatte das hierlolz schrieb:
Da gehört dein Semikolon hin....
halt so interpretiert, dass ein Semikolon erforderlich sei.
Da hab ich mich vertippt. Richtig ist natürlich kein.