problems/risks due to programming language, stories requ
Dave Kirsch
a563 at mindlink.UUCP
Thu Mar 15 00:57:14 AEST 1990
> amull writes:
>
> Msg-ID: <775 at s5.Morgan.COM>
> Posted: 10 Mar 90 17:50:32 GMT
>
> Org. : Morgan Stanley & Co. NY, NY
> Person: Andrew P. Mullhaupt
> BTW - fall through and the 'double duty' break keyword are
> definitely examples of C flaws. If you must, flame me, but in
> comp.lang.c, (OK?)
>
> Later,
> Andrew Mullhaupt
C flaws? Do this in Pascal:
switch (i) {
case 2 : /* Add 2 to j */
j++;
case 1 : /* Add 1 to j */
j++;
case 0 : /* Print j out */
printf("%d\n", j);
break;
default :
printf("Illegal value in switch.\n");
abort();
}
In pascal you have to:
case i of
2 : begin /* Add 2 to j */
j := j + 2;
writeln(j);
end;
1 : begin /* Add 1 to j */
j := j + 1;
writeln(j);
end;
0 : begin /* Print j out */
writeln(j);
end;
else begin
writeln('Illegal value in case.');
Halt;
end;
end;
If you take a look at this, you can see how C's break inside a switch is very
conveinent. I admit, when I started learning C from when I was a Pascal
programmer I thought it was strange, too. But I never saw it as a 'flaw'. I
reliezed there must be a reason for it being like that, now that I'm using C, I
want it like that. For large switch statements, you can do some really good
code reduction using that technique. If you comment it well, it looks fine and
runs fine.
--
_____________________________________________________________________
Dave Kirsch UUCP: {uunet,ubc-cs}!van-bc!rsoft!mindlink!a563
Voice: (604) 327-4404 a563 at mindlink.UUCP
Vancouver, British Columbia
More information about the Comp.lang.c
mailing list