switch vs. initializing declarations

Jeff Anton jeff at ingres.com
Sat Sep 15 06:40:27 AEST 1990


A few days ago, it occured to me that I didn't have a good feeling
as to what the following code fragment which seems to be legal C
means.  This is a retorical question and is not real world code, but I
would like to hear from someone who has a good knowledge of the
formal C specifications.  Please reply to me personally as I don't
often read comp.lang.c but post to comp.lang.c if you wish.

main(argc, argv)
int	argc;
char	*argv[];
{
	switch (argc) {
		int	v = 1;

	default:
		v += 5;
	case 1:
		printf("%d\n", v);
	}
	return 0;
}


The ambiguity is whether or not 'v' should be initialized or not.
All compilers I've tested recognize the declaration but do not
do the initialization.  Some report line 6 statement not reached when
clearly the statement does have the declaritoy effect.  I could not decide
what is correct from K&R 1 but due to a sentence that said an initialization
with a declaration was a shorthand syntax I kind of expected what I got
from the compilers.

Can someone present a case that the initialization should have occured or
prove that it should not?
					Jeff Anton
					INGRES Co.



More information about the Comp.lang.c mailing list