An amusing piece of code

Tim Smith tim at ism780c.UUCP
Sat Apr 5 14:10:07 AEST 1986


Here is an amusing piece of code that someone who wants to remain
annonymous invented.

The situation is that we have something that, if written with if-then-else
would be

	if ( thing == A )
		A-code;
	else
	if ( thing == B || thing == C || thing == D ) {
		switch ( thing ) {
	case B:         B-code; break;
	case C:         C-code; break;
	case D:         D-code; break;
		}
		BCD-common-code;
	} else
	if ( thing == E )
		E-code;

A, B, C, D, and E are constant expressions, so this is not elegant.
We would like to use a switch for everything.  Here is a solution:

	switch ( thing ) {
case A:         A-code; break;
case B:         B-code; if ( 0 ) {
case C:         C-code; if ( 0 ) {
case D:         D-code; }}
		BCD-common-code; break;
case E:         E-code;
	}

Noone here has been able to come up with a reasonable style for this.  The
example above is not to bad, but if B-code, C-code, etc, are complicated,
then it starts to get ugly.


-- 

Tim Smith       sdcrdcf!ism780c!tim || ima!ism780!tim || ihnp4!cithep!tim

PS: I bet you were relieved that I didn't say you invented this, right Darryl?



More information about the Comp.lang.c mailing list