switch-case Problematik
-
pointercrash() schrieb:
sondern als reentry in den Blockheader. Das führt wie bei Schleifen in den Entscheidungsteil (naja, bei do halt nicht).
das macht das erst zur schleife, und damit die schleife nicht mehr am kopf erkennbar. wenn du drauf stehst, bastel dir nen kleinen präprozessor dafür - aber die meisten programmierer würden aus gutem grund einen großen bogen um sowas machen.
ru,
cirion
-
cirion schrieb:
es macht schon sinn, dass jede form von schleife als solche bereits an ihrem kopf erkennbar ist.
Ich lach' mich schief, da sind tatsächlich "fighters for the truth" einer Sprache, die einen jährlichen Wettbewerb im "most obfuscative code" (höchst erfolgreich) abhalten und die's nicht anders andenken wollen, weil's schon immer so war?
Nee, ich dachte, 'ne Frage wär's wert, warum continue ausgerechnet für switch nicht gelten sollte, aber deswegen Anfeindungen zu kassieren, naja, was kommt nach dem großteils nicht implementierten C99?
-
du stellst eine frage, die mit sprachdesign zu tun hat, und kommst dann mit argumenten, die höchstens mit sprachmissbrauch zu tun haben. was erwartest du? die antwort aus sicht des scriptkiddies, das so eine fixe idee toll findet, weil man plötzlich schleifen auch noch "obfuscaten" kann, oder eine antwort aus sicht eines informatikers, der sich mit sprachdesign ein wenig auskennt? letzteres wohl eher nicht...
ru,
cirion
-
knivil schrieb:
Nur kann es passieren, dass der Compiler die Reihenfolge meiner cases verändert?
Wie kommst du ueberhaupt auf diese Idee?
Naja, ich kam auf diese Vermutung, da es innerhalb eines switch-case Blocks nicht möglich ist eine Variable zu definieren. Aber das kann ja auch nicht gehen, logisch. Und das hat dann auch nichts mit meiner Vermutung zu tun.
Aber, um bei der Sache zu bleiben, eine umschachtelnde Infinite-Loop hätte schon einen kleinen Vorteil. Man müsste die Labeln nicht mehr sequentiell aufsteigend anordnen, schätze ich mal.
Gruss
T.
-
cirion schrieb:
du stellst eine frage, die mit sprachdesign zu tun hat, und kommst dann mit argumenten, die höchstens mit sprachmissbrauch zu tun haben.
Begründungslose Behauptung.
cirion schrieb:
was erwartest du? die antwort aus sicht des scriptkiddies, das so eine fixe idee toll findet, weil man plötzlich schleifen auch noch "obfuscaten" kann,
Eine sinnvolle Antwort, warum das nicht so sein sollte.
cirion schrieb:
oder eine antwort aus sicht eines informatikers, der sich mit sprachdesign ein wenig auskennt?
Ach, laß mal stecken. Ich hab' nur zwei Jahrgänge Elektrotechniker mit meinem Solver versorgt, bis es den PB 1000 nicht mehr gab und ich anderes zu tun hatte. Glaub' mir, was Praxistauglichkeit anbelangt bist Du mit Information unterversorgt.
-
pointercrash() schrieb:
Ach, laß mal stecken. Ich hab' nur zwei Jahrgänge Elektrotechniker mit meinem Solver versorgt, bis es den PB 1000 nicht mehr gab und ich anderes zu tun hatte. Glaub' mir, was Praxistauglichkeit anbelangt bist Du mit Information unterversorgt.
soll mich das jetzt beeindrucken, oder was? das einzige, was das vermittelt, ist deine selbstüberschätzung.
ru,
cirion
-
@cirion: Willkommen im Klub.
Und laß Dich nicht ärgern.
-
volkard schrieb:
@cirion: Willkommen im Klub.
danke
Und laß Dich nicht ärgern.
ach, da bin ich schlimmeres gewohnt
ru,
cirion
-
Tomahawk schrieb:
Aber, um bei der Sache zu bleiben, eine umschachtelnde Infinite-Loop hätte schon einen kleinen Vorteil. Man müsste die Labeln nicht mehr sequentiell aufsteigend anordnen, schätze ich mal.
Du hattest doch mal arge Sorgen um die Performance. Üblicherweise hast Du im ASM- Output oben im Switch- Head die Entscheidung, welches Label (case) angesprungen wird. Ich weiß nicht, ob das Standard ist, aber nach drei Compilern scheint das so zu sein. Danach wird nichts mehr geprüft, nur beim break gehts an das switch- Ende, ansonsten wird der Code weiter stur durchgeackert.
Das kann man aktiv nutzen, um z.B. upper/lowercase- Anpassungen zu vermeiden oder einfach jeden case mit break abzuschließen.
-
volkard schrieb:
@cirion: Willkommen im Klub.
Und laß Dich nicht ärgern.cirion schrieb:
ach, da bin ich schlimmeres gewohnt
Was wollt ihr dann hier noch? Geht doch einfach heiraten (ist ja mittlerweile erlaubt).
-
Mann o mann, sag mal müßtest Du nicht schon Lange im Bett sein ? So wie Du dich hier gibst kannst ja nich wirklich älter als 5 sein.
1.) Es gibt kein continue in einem switch - case block. Und das ist eine Tatsache !
2.) Es wird in C auch keine geben, auch wenn Du es Dir noch so wünscht.
3.) Niemand hat Dich Persönlich angegriffen, aber Du must immer deinen Senf dazugeben, und andere beleidiegen, die berechtigt anderer Meinung sind als Du.
-
kopfschüttel schrieb:
3.) Niemand hat Dich Persönlich angegriffen,
Doch, das habe ich. Es hat sich Wort für Wort aufgeschaukelt.
Angefangen hat es glaube ich mit
"Du verwechselst Definition mit Logik und behauptest, weil es so definiert ist, ist es auch logisch. Das ist sophistische Selbstreferenz, aber kein Argument."=="Du kannst nicht logisch argumentieren."
über
"Tut mir leid, deiner Logik folge ich nicht."=="Du kannst auch nicht."
und
"Das ist nicht "meine Logik", sondern die allgemeine Logik"=="Doch, ich kann."
und
"Ich bin dankbar, daß Du keine "logische" Sprache entwirfst."=="Nein, du kannst nicht."
und dem wechsel auf die Meta-Ebene mit
"Es ist zum Kotzen mit Dir, immer bei Mangel an Argumenten wirst Du persönlich."
Tja, da kann ich wenig machen.Aber ich muß ja auch nicht immer was machen, wo ich doch stattdessen cirion heiraten darf.
-
muss dir leider mitteilen, dass das bis nach meiner scheidung warten muss
ru,
cirion
-
-
cirion schrieb:
muss dir leider mitteilen, dass das bis nach meiner scheidung warten muss
Mist. Ruf mich dann an oder mail an volkard@normannia.de, falls Du eine Frau bist.
-
volkard schrieb:
falls Du eine Frau bist.
ich fürchte, auch damit kann ich nicht dienen
ru,
cirion
-
Für alle, die gerne continue in switch-blöcken verwenden wollen
int i = 0; while(true) { switch(i++) { case 0: continue; case 1: continue; case 2: break; } break; }
Ist mir gerade beim Lesen des Threads eingefallen, finde das selbst aber ziemlich sinnfrei.
-
Jochen S. schrieb:
Ist mir gerade beim Lesen des Threads eingefallen, finde das selbst aber ziemlich sinnfrei.
Was heißt eingefallen, das ist quasi die Variante 2 des allerersten Posts.
Sinnfrei ist es auch nicht, was Du da vor Dir hast, ist das Skelett einer finite state machine (FSM).Daß Sprachdesigner hinterher oftmals mit ihren Entwürfen nicht ganz glücklich sind, kann man mehrfach nachlesen, ein "endcase" wie von volkard erwähnt, wäre wahrscheinlich die schönere Wahl gewesen. Aber was soll's, ist nun mal so ...
-
pointercrash() schrieb:
Was heißt eingefallen, das ist quasi die Variante 2 des allerersten Posts.
Stimmt, ich hab halt erst ab seite 2 oder 3 gelesen