Switch case labels in random order
In this example we are checking the results when switch case labels in random order is written inside c program
Switch case labels in random order
void main() { int choice = 7; switch (choice) { default: printf("I am in Default"); case 1: printf("I am in case 1"); break; case 2: printf("I am in case 2"); break; case 3: printf("I am in case 3"); break; } }
Options : Guess the Output
- I am in Default I am in Case 1
- I am in Case 1
- I am in Default
- None of these
Explanation :
Firstly let me print output of the above program -
I am in Default I am in Case 1
Now if you see the above program then you can notice one thing we have choice = 7
means default case would be executed.
Compiler predicts which case we need to execute before going inside switch case, but while execution it checks each case label from top to bottom. In this situation default is written at first position so compiler goes inside the default case.
Also read Switch Case rules
Inside the default it will print following statement -
printf("I am in Default");
Once condition is checked and case statement is executed then switch case wont check the condition again, it starts executing all the remaining cases written below current case.
default: printf("I am in Default"); case 1: printf("I am in case 1"); break;
We have written case 1
exactly after the default case so case 1
will be executed. As we have written break statement inside the case 1
, it terminates the switch
If we write the above program like this by including break statement inside default case -
default: printf("I am in Default"); break; case 1: printf("I am in case 1"); break;
then only statements inside default would be printed on the screen
Here is nice discussion about the effects caused over efficiency when we place switch case labels in random order