last modified January 9, 2023
C switch tutorial shows how to control flow in C with switch statement.
The switch statement is a control statement that used to change the
flow of a program. It provides an easy way to dispatch execution to different
parts of code based on the value of a variable or expression. The
switch statement is an alternative to multiple if/else
statements.
The body of a switch statement may have an arbitrary number of case
labels. The labels are evaluated against the given value. The expression
provided in the switch must result in a constant value.
The expression is evaluated once and compared with the values of each
case label. If there is a match, the statements after the matching
label are executed.
A case label is usually ended with a break
statement; it terminates the execution of a switch statement. If
omitted, it execution goes to the next case label.
An optional default statement is executed when there is no match
found.
In the following example, we use the switch statement to make
a decistion based on the user input.
#include <stdio.h>
int main() {
printf("Are you sure to continue? y/n ");
char c;
scanf(" %c", &c);
switch (c) {
case 'y':
printf("program continues\n");
break;
case 'n':
printf("program stops\n");
break;
default:
printf("wrong option\n");
}
}
We are asked if we want to continue and we are given two options to choose: y or n.
char c;
scanf(" %c", &c);
We read the input from the user with scanf. The space character
before the %c specifier skips any leading whitespace.
case 'y':
printf("program continues\n");
break;
This branch is executed if we chose 'y'.
case 'n':
printf("program stops\n");
break;
This branch is executed if we chose 'n'.
default:
printf("wrong option\n");
We get this branch executed for any other option.
$ ./switch_stm Are you sure to continue? y/n y program continues
The next example shows how to get the same output for multiple options.
#include <stdio.h>
enum week { Mon, Tue, Wed, Thu, Fri, Sat, Sun };
int main() {
enum week day = Wed;
switch (day) {
case Mon:
case Tue:
case Wed:
case Thu:
case Fri:
printf("Weekday\n");
break;
case Sat:
case Sun:
printf("Weekend\n");
break;
}
}
If we omit the break statement, the execution falls through to the
next case. It can be used to group options for single output.
case Mon:
case Tue:
case Wed:
case Thu:
case Fri:
printf("Weekday\n");
break;
Monday throug Friday are weekdays.
$ ./switch_stm2 Weekday
In this article, we have covered the C switch statement.