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
defaultcase to handle unexpected values. - Use
breakstatements to prevent fall-through unless intentionally desired. - Group cases together if they should execute the same code.
- Use enumerations with
switchstatements 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
switchstatement is an efficient way to handle multiple conditions based on a single expression. - Proper use of
breakstatements is crucial to prevent unintended code execution. - Including a
defaultcase ensures that all possible values are accounted for. - Using enumerations with
switchstatements enhances code clarity.