C Switch
Switch Statement
Instead of writing many if...else statements, you can use the switch statement.
The switch statement selects one of many code blocks to be executed:
Syntax
switch (expression) {
case x:
// code
block
break;
case y:
// code block
break;
default:
// code block
}
This is how it works:
- The
switchexpression is evaluated once - The value of the expression is compared with the values of each
case - If there is a match, the associated block of code is executed
- The
breakstatement breaks out of the switch block and stops the execution - The
defaultstatement is optional, and specifies some code to run if there is no case match
The example below uses the weekday number to calculate the weekday name:
Example
int day = 4;
switch (day) {
case 1:
printf("Monday");
break;
case 2:
printf("Tuesday");
break;
case 3:
printf("Wednesday");
break;
case 4:
printf("Thursday");
break;
case 5:
printf("Friday");
break;
case 6:
printf("Saturday");
break;
case 7:
printf("Sunday");
break;
}
// Outputs "Thursday" (day 4)
Try it Yourself »
The break Keyword
When C reaches a break
keyword, it breaks out of the switch block.
This will stop the execution of more code and case testing inside the block.
Without break, C does not stop at the end of the matching case. It continues to run the code in the next cases too, until it reaches a break or the end of the switch. This is called fall-through:
Example
int day = 2;
switch (day) {
case 1:
printf("Monday\n");
break;
case 2:
printf("Tuesday\n"); // No break here
case 3:
printf("Wednesday\n");
break;
case 4:
printf("Thursday\n");
break;
}
// Outputs "Tuesday" and "Wednesday"
Try it Yourself »
Here, case 2 matches, so "Tuesday" is printed. There is no break, so C continues into case 3 and also prints "Wednesday". Then it reaches a break and stops.
Tip: End each case with break, unless you want the code to continue into the next case.
The default Keyword
The default keyword specifies some code to run if there is no
case match:
Example
int day = 4;
switch (day) {
case 6:
printf("Today is
Saturday");
break;
case 7:
printf("Today is Sunday");
break;
default:
printf("Looking forward to the Weekend");
}
// Outputs "Looking forward to the Weekend"
Try it Yourself »
Note: The default case is usually written last in the switch. When it is last, it does not need a break.
Combine Cases
Sometimes, several values should run the same code. Then you can write the cases right after each other, and let them share one block of code:
Example
int day = 6;
switch (day) {
case 6:
case 7:
printf("Weekend");
break;
default:
printf("Weekday");
}
// Outputs "Weekend"
Try it Yourself »
case 6 has no code of its own, so C falls through to the code under case 7. This means that both 6 and 7 print "Weekend". For all other values, the default code runs.
Visualize the switch Statement
Choose a value for day below to see which case runs:
Code
How C decides
Output
Explanation