Spielereien mit switch (...)

16/11/2015 - 22:01 von Rainer Weikusat | Report spam
In nicht allzu ferner Vergangenheit ist mir beim Betrachten von

switch (expression) statement

und gleichzeitigem Nachdenken uber Duffs Geraet der Gedanke gekommen,
dass switch eigentlich keine grosse Aehnlichkeit mit einer
Mehrwegeverzweigung a la "Pascal case" hat sondern einfach nur
ermoeglicht, die Ausfuehrung von statement an der Position einer
bestimmte Sprungmarke im Inneren davon beginnen zu lassen. ZB mit
folgendem, etwas widersinnig anmutendem Konstrukt:


#include <stdlib.h>
#include <stdio.h>

int main(int argc, char **argv)
{
int i;

if (argc != 2) return 0;

i = atoi(argv[1]);
switch (i - 1)
if (i == 1) {
default:
puts("Im Labyrinth des Irrsinns");
} else if (i == 3) {
case 0:
puts("Oder in der Naehe davon");
} else {
case 2:
puts("Faellt nichts durch");
}

return 0;
}
-

oder als Alternativmethode um eine Schleife in der Mitte zu beginnen:

-
#include <stdio.h>

int main(int argc, char **argv)
{
if (!*++argv) return 0;

switch (0) do {
fputs(", ", stdout);

default:
fputs(*argv, stdout);
} while (*++argv);

fputc('', stdout);

return 0;
}
-
 

Lesen sie die antworten

#1 Juergen Ilse
16/11/2015 - 23:16 | Warnen spam
Hallo,

Rainer Weikusat wrote:
In nicht allzu ferner Vergangenheit ist mir beim Betrachten von

switch (expression) statement

und gleichzeitigem Nachdenken uber Duffs Geraet der Gedanke gekommen,
dass switch eigentlich keine grosse Aehnlichkeit mit einer
Mehrwegeverzweigung a la "Pascal case" hat



Stimmt. "switch" ist in C eigentlich eher etwas wie ein "berechnetes goto".
Das ist aber nichts neues, sondern bereits seit ewigkeiten allgemein be-
kannt ...

Tschuess,
Juergen Ilse ()
Ein Domainname ist nur ein Name, nicht mehr und nicht weniger.
Wer mehr hineininterpretiert, hat das Domain-Name-System nicht
verstanden.

Ähnliche fragen