Seite 1 von 2

C: switch

Verfasst: Di Jul 22, 2008 3:42 pm
von nufan
<edit by="Xin">http://tutorial.proggen.org/doku.php?id=c:switch</edit>

Ist im default-Block denn noch ein break notwendig? Es gibt keine Funktionen, die danach noch ausgeführt werden könnten.

Re: C: switch

Verfasst: Di Jul 22, 2008 4:57 pm
von Xin
nufan hat geschrieben:Ist im default-Block denn noch ein break notwendig? Es gibt keine Funktionen, die danach noch ausgeführt werden könnten.
Nötig... nein.

Trotzdem sollte da einer sein, denn ein break zuviel schadet nicht... mal eins vergessen ist in C eine beliebte Fehlerquelle.

Re: C: switch

Verfasst: Mi Jul 23, 2008 11:54 am
von nufan
Xin hat geschrieben:
nufan hat geschrieben:Ist im default-Block denn noch ein break notwendig? Es gibt keine Funktionen, die danach noch ausgeführt werden könnten.
Nötig... nein.

Trotzdem sollte da einer sein, denn ein break zuviel schadet nicht... mal eins vergessen ist in C eine beliebte Fehlerquelle.
Ist das nicht von Compiler zu Compiler verschieden? Bei meinem wird zB komplett ohne breaks die kompletten nachfolgenden case-Anweisungen ausgeführt. Aber wie schon gesagt: Eins zuviel schadet ja nicht :D

Re: C: switch

Verfasst: Mi Jul 23, 2008 12:22 pm
von Kerli
nufan hat geschrieben: Ist das nicht von Compiler zu Compiler verschieden? Bei meinem wird zB komplett ohne breaks die kompletten nachfolgenden case-Anweisungen ausgeführt.
Das soll ja auch so sein. Es geht ja hier nur um den 'default'-Block. Und da er der letzte Block ist, kann man das 'break' ruhig weglassen, weil ja nachher sowieso kein Block mehr kommt der ausgeführt werden könnte.

Re: C: switch

Verfasst: Mi Jul 23, 2008 1:33 pm
von Dirty Oerti
Es zeigt sich mal wieder:

Programmierer sind faule Menschen^^ :)

Re: C: switch

Verfasst: Mi Jul 23, 2008 1:39 pm
von Kerli
Dirty Oerti hat geschrieben:Es zeigt sich mal wieder:

Programmierer sind faule Menschen^^ :)
Wie kommst du denn da drauf :D

Aber es ist auch so üblich in den 'default' Block kein 'break' hinein zu tun, denn es macht ja den Code weder lesbarer noch sonst irgendwas nützliches...

C:Switch

Verfasst: Sa Okt 04, 2008 7:51 pm
von Xin
<edit by Xin>Zusammengefügt aus einem anderen Thread, bei dem ich wohl das eine oder andere übersehen habe ;-)</edit>

Hallo nufan,

zum einen bitte einen Diskussionsthread erzeugen und im Wiki einen Link auf den Thread setzen, wenn Du eine neue Seite eröffnest, damit das auch Leuten bewußt wird, die nicht wie ich die letzten Änderungen verfolgen.

Zur Diskussion:

Der Artikel gefällt mir gut. :-)

Dennoch möchte ich auf einige Dinge hinweisen, die Du vielleicht noch einarbeiten kannst.
* Die Einleitung ist recht kurz, Du könntest dort vielleicht etwas mehr auf das Problem eingehen, dass Switch löst.
* Du kannst ausschließlich auf Konstanten in case vergleichen und das hat einen guten Grund: der Kompiler vergleicht nicht mit ==, sondern er kann so HashTables anlegen oder eine binäre Suche, oder irgendwas, was ihm einfällt, um möglichst schnell an die cases zu gelangen. Es ist damit eben nicht so, dass bei 10 cases man (mit einem guten Compiler) auch 10 Abfragen benötigt, um an den 10. case zu kommen.
* "Anweisungsblock" erscheint mir passender für "Programmpaket"

Re: C:Switch

Verfasst: Sa Okt 04, 2008 8:11 pm
von nufan
Der Artikel ist nicht von mir :)
Das Original stammt glaube ich von Metamorph (zumindest hat er ihn vor mir zuletzt bearbeitet).
Ich habe ihn heute nur noch ein klein wenig überarbeitet.

Hier jedenfalls der Link:
http://tutorial.proggen.org/doku.php?id=c:switch

Lg

Re: C:Switch

Verfasst: Sa Okt 04, 2008 8:20 pm
von Xin
nufan hat geschrieben:Der Artikel ist nicht von mir :)
Das Original stammt glaube ich von Metamorph (zumindest hat er ihn vor mir zuletzt bearbeitet).
Ich habe ihn heute nur noch ein klein wenig überarbeitet.

Hier jedenfalls der Link:
http://tutorial.proggen.org/doku.php?id=c:switch
Schweigen wir einfach darüber, wer ihn geschrieben hat... es ist lange her, da gab's noch nicht die Diskussionsthreads, ich ändere ihn ;-)

Re: C:Switch

Verfasst: Sa Okt 04, 2008 8:51 pm
von nufan
:D :D :D
http://proggen.org/viewtopic.php?f=39&t=83

Man sollte auch die 2. Seite beachten ;)

Lg