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.#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;
}
När man inser att switch bara är en fancy-goto så är det lättare att se hur det ens kan funka.