C Switch Statement
The switch
statement in C allows you to execute one code block among many alternatives. It is an efficient alternative to using multiple if...else if
statements when comparing the same variable to different values.
Key Topics
1. Syntax of Switch Statement
switch (expression) {
case constant1:
// Code to execute if expression equals constant1
break;
case constant2:
// Code to execute if expression equals constant2
break;
// ... more cases ...
default:
// Code to execute if expression doesn't match any case
}
2. How Switch Works
The switch
statement evaluates the expression and compares it against the values of each case
. When a match is found, the corresponding block of code is executed. The break
statement prevents the code from falling through to the next case.
3. Example of Switch Statement
Example: Simple Calculator
#include <stdio.h>
int main() {
char operator;
double num1, num2, result;
printf("Enter an operator (+, -, *, /): ");
scanf(" %c", &operator);
printf("Enter two numbers: ");
scanf("%lf %lf", &num1, &num2);
switch (operator) {
case '+':
result = num1 + num2;
printf("%.2lf + %.2lf = %.2lf\n", num1, num2, result);
break;
case '-':
result = num1 - num2;
printf("%.2lf - %.2lf = %.2lf\n", num1, num2, result);
break;
case '*':
result = num1 * num2;
printf("%.2lf * %.2lf = %.2lf\n", num1, num2, result);
break;
case '/':
if (num2 != 0) {
result = num1 / num2;
printf("%.2lf / %.2lf = %.2lf\n", num1, num2, result);
} else {
printf("Error: Division by zero.\n");
}
break;
default:
printf("Invalid operator.\n");
}
return 0;
}
Code Explanation: The program takes an operator and two numbers as input. The switch
statement selects the operation based on the operator entered. The break
statements prevent fall-through to subsequent cases.
4. Using Switch with Enumerations
The switch
statement can be effectively used with enumerations for better code readability.
Example: Days of the Week
#include <stdio.h>
enum Day {
SUNDAY,
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY
};
int main() {
enum Day today = WEDNESDAY;
switch (today) {
case SUNDAY:
case SATURDAY:
printf("It's the weekend!\n");
break;
default:
printf("It's a weekday.\n");
}
return 0;
}
Code Explanation: The program uses an enumeration to represent days of the week. The switch
statement checks if the day is a weekend or a weekday.
Best Practices
- Always include a
default
case to handle unexpected values. - Use
break
statements to prevent fall-through unless intentionally desired. - Group cases together if they should execute the same code.
- Use enumerations with
switch
statements for better readability and maintainability.
Don'ts
break
statements if fall-through is not intended.switch
for complex conditions; it's designed for comparing a single expression against constants.switch
; it's intended for integer or character constants.Key Takeaways
- The
switch
statement is an efficient way to handle multiple conditions based on a single expression. - Proper use of
break
statements is crucial to prevent unintended code execution. - Including a
default
case ensures that all possible values are accounted for. - Using enumerations with
switch
statements enhances code clarity.