switch
StatementThe switch
statement in C++ is a control flow construct used for multi-way branching. It provides an efficient way to execute different code blocks based on the value of a single expression, often serving as an alternative to multiple if-else statements.
#include <iostream>
int main() {
int dayNumber;
std::cout << "Enter a day number (1-7): ";
std::cin >> dayNumber;
switch (dayNumber) {
case 1:
std::cout << "Monday";
break;
case 2:
std::cout << "Tuesday";
break;
case 3:
std::cout << "Wednesday";
break;
case 4:
std::cout << "Thursday";
break;
case 5:
std::cout << "Friday";
break;
case 6:
std::cout << "Saturday";
break;
case 7:
std::cout << "Sunday";
break;
default:
std::cout << "Invalid day number";
}
std::cout << std::endl;
return 0;
}
switch
statement evaluates the dayNumber
expression.case
represents a possible value of dayNumber
.break
statement prevents fall-through to the next case.default
case handles any value not explicitly covered by the other cases.#include <iostream>
int main() {
char grade;
std::cout << "Enter your grade (A, B, C, D, or F): ";
std::cin >> grade;
switch (grade) {
case 'A':
case 'B':
case 'C':
std::cout << "You passed!";
break;
case 'D':
std::cout << "You barely passed.";
break;
case 'F':
std::cout << "You failed.";
break;
default:
std::cout << "Invalid grade entered.";
}
std::cout << std::endl;
return 0;
}
break
.break
statement is still used to prevent unintended fall-through.#include <iostream>
enum class Color { Red, Green, Blue, Yellow };
int main() {
Color selectedColor = Color::Blue;
switch (selectedColor) {
case Color::Red:
std::cout << "You selected Red";
break;
case Color::Green:
std::cout << "You selected Green";
break;
case Color::Blue:
std::cout << "You selected Blue";
break;
case Color::Yellow:
std::cout << "You selected Yellow";
break;
}
std::cout << std::endl;
return 0;
}
switch
.#include <iostream>
#include <string>
int main() {
std::cout << "Enter a fruit name: ";
std::string fruit;
std::cin >> fruit;
switch (int length = fruit.length(); length) {
case 5:
std::cout << "The fruit name has 5 letters. Is it 'Apple'?";
break;
case 6:
std::cout << "The fruit name has 6 letters. Is it 'Orange'?";
break;
case 7:
std::cout << "The fruit name has 7 letters. Is it 'Banana'?";
break;
default:
std::cout << "The fruit name has " << length << " letters.";
}
std::cout << std::endl;
return 0;
}
int length = fruit.length();
is executed before the switch comparison.length
) is then used in the switch expression.Performance: switch
can be more efficient than multiple if-else statements, especially for a large number of cases.
Compile-time Constants: Case labels must be compile-time constants, not variables.
Default Case: It's a good practice to include a default case to handle unexpected values.
Scoping: Each case in a switch statement does not create a new scope. Use blocks {}
if you need to declare variables within a case.
The switch
statement in C++ is a powerful control flow construct for multi-way branching based on a single expression. It offers a clean and efficient alternative to multiple if-else statements, especially when dealing with discrete values like integers or enumerations. Key features include the ability to handle multiple cases, intentional fall-through behavior, and a default case for unmatched values. While switch
statements are limited to integral types and enumerations, they provide better readability and potentially better performance for multiple condition checking. Modern C++ (C++17 and later) has enhanced the switch
statement with initialization capabilities, further improving its utility. When using switch
, it's important to remember to use break
statements to prevent unintended fall-through, consider all possible cases including a default, and be aware of the compile-time constant requirement for case labels.