Default. (Rather long!)
Kim Chr. Madsen
kimcm at diku.UUCP
Wed Jun 20 18:04:52 AEST 1984
Jack Jansen:
> What does
>
> switch(i) {
> ...
> switch(j) {
> ...
> default: ...
> }
> }
>
First of all it doesn't make sense to just put a switch into a
switch statement, because when you enter the first switch
statement, you just jump to the corresponding case-label and if
noone matches then you jump to the default-label, in the
outermost switch-level. You can see the default-label in each
level as a local label, not known to the switch statements that
surrounds the actual switch label.
When I say that it doen't make sense to just put a switch
statement into another, it's a truth with modifications:
a) if it has the form:
switch (a) {
case 1 : ...;
break;
case 2 : switch (b) {
case 1 : ...;
break;
default: ...;
break;
}
break;
default: ...;
break;
}
it certainly can be usefull as a control statement.
b) But if you on the other hand construct a switch-
statement like this:
switch (a) {
switch (b) {
:
:
}
}
The switch-statements that lies within the outermost
switch-statement will never be executed. [sic!]
If you want to see it for yourself then try to run this little
program:
main ()
{
int i = 4,j = 5;
switch (i) {
switch (j) {
case 7 : printf ("something wrong with j!\n");
break;
default: printf ("j = %d (5)\n",j);
break;
}
case 8 : printf ("something wrong with i!\n");
break;
default: printf ("i = %d (4)\n",i);
break;
}
}
> Or I could even add a 'goto default'.........
> (Note: my C Ref Man doesn't say that default is a reserved word,
> so using default as an ordinary label is perfectly legal)
No you couldn't because default is a reserved word, so either
is your C Ref Man corrupted, or you maybe had overlooked the
section where the keywords is listed (-: However If your C Ref
Man does miss this section I have printed it below...
C Reference Manual
Dennis M. Ritchie
Bell Laboratories
Murray Hill, New Jersey 07974
May 1, 1977
2.3 Keywords
The following identifiers are reserved for use as keywords,
and may not be used otherwise:
int extern else
char register for
float typedef do
double static while
struct goto switch
union return case
long sizeof default
short break entry
unsigned continue auto
if
The keyword entry is not currently implemented by any
compiler but is reserved for future use. Some imple-
mentations also reserve the word fortran.
Kim Chr. Madsen.
Dept. of Computer Science
University of Copenhagen
Denmark.
------------------------------
UUCP: ...mcvax!diku!kimcm
More information about the Comp.lang.c
mailing list