What will be the output of the following C program segment? (GATE CS 2012)
char inchar = 'A' ;
switch (inchar)
{ case 'A' :
printf ( "choice A \n" ) ;
case 'B' :
printf ( "choice B " ) ;
case 'C' :
case 'D' :
case 'E' :
default :
printf ( "No Choice" ) ;
} |
(A) No choice
(B) Choice A
(C) Choice A
Choice B No choice
(D) Program gives no output as it is erroneous
Answer: (C)
Explanation: There is no break statement in case ‘A’. If a case is executed and it doesn’t contain break, then all the subsequent cases are executed until a break statement is found. That is why everything inside the switch is printed.
Try following program as an exercise.
int main() { char inchar = 'A'; switch (inchar) { case 'A' : printf ("choice A \n") ; case 'B' : { printf ("choice B") ; break; } case 'C' : case 'D' : case 'E' : default: printf ("No Choice") ; } }