Variant på Duffs device i C

Avdelningen för programmering, nätverk samt alternativa OS.
Post Reply
User avatar
IcePic
Hedersbit
Posts: 6061
Joined: 2002-03-08 16:09:38

Variant på Duffs device i C

Post by IcePic »

#include <stdio.h>
int main(int argc)
{
char *num;

switch (argc-1)
{
if (0) { case 0: num = "zero"; }
if (0) { case 2: num = "two"; }
if (0) { case 3: num = "three"; }
if (0) { case 4: num = "four"; }
if (0) { case 5: num = "five"; }
if (0) { default: num = "many"; }
printf("Called with %s arguments.\n", num);
break;
case 1:
printf("Called with one argument.\n");
}

return 0;
}
Bortsett från att man säkert får "nasal daemons" av main-raden enligt C-standarden nuförtiden, så är det ytterligare en variant på hur man kan mixa constructs i varandra och få det att "bli rätt" ändå på lite oväntat vis.

När man inser att switch bara är en fancy-goto så är det lättare att se hur det ens kan funka.
Oh give me a clone, my very own clone,
with the Y chromosome changed to X!
And since she's my own, of my own flesh and bone,
she'll be thinking of nothing but sex!
Post Reply