C++ Switch - Case statement is almost same as the if -- else statement.
Let us understand C++ Switch - Case with the below example.
| Roll Number | Name |
|---|---|
| 1 | Ronald |
| 2 | John |
| 3 | Murali |
| 4 | Satish |
| 5 | Debasish |
Now, say the Principal of the school has asked you to write a C++ program, that will show you the name of a student once you enter his/her roll number.
Now, that you are an expert in if --- else. You wrote the program using if --- else.
#include <iostream>
using namespace std;
int main() {
int rollNumber = 2;
if (rollNumber == 1) {
cout << "Ronald";
}
else if (rollNumber == 2) {
cout << "John";
}
else if (rollNumber == 3) {
cout << "Murali";
}
else if (rollNumber == 4) {
cout << "Satish";
}
else if (rollNumber == 5) {
cout << "Debasish";
}
else {
cout << "The student does not exist.";
}
return 0;
}
So, you wanted to search the name of the student whose roll number is 2.
And you got the output as John.
Now, just think for a moment. What if there were 100 students in your class? You had to write 100 if -- else -- if statements.
Well ! The good news is C++ provides a replacement for the above case. Where the same variable needs to be compared with several values.
What I meant is, the same variable rollNumber is repeated at every if -- else -- if statements.
And to avoid this repetition, C++ switch - case comes to rescue.
So, at first, let us rewrite the above program using C++ switch - case. Then we will understand how it works?
#include <iostream>
using namespace std;
int main() {
int rollNumber = 2;
switch (rollNumber) {
case 1:
cout << "Ronald";
break;
case 2:
cout << "John";
break;
case 3:
cout << "Murali";
break;
case 4:
cout << "Satish";
break;
case 5:
cout << "Debasish";
break;
default:
cout << "The student does not exist.";
break;
}
return 0;
}
Now, if you look at the current code. It is quite cleaner, compared to the if -- else -- if code.
int rollNumber = 2;

There is a switch statement, where we specify the rollNumber.
switch (rollNumber)
Then there are cases, like case 1, case 2, e.t.c.
case 1: cout << "Ronald"; break; case 2: cout << "John"; break; case 3: cout << "Murali"; break; case 4: cout << "Satish"; break; case 5: cout << "Debasish"; break; default: cout << "The student does not exist."; break;
And for every case, it checks for the rollNumber(2 in this case as rollNumber=2).
When it finds a match in case 2.
case 2: cout << "John"; break;
It prints "John" and comes out of the switch statement as we have specified a break statement.

switch(expression/variable) {
case value1:
// code for value1
break;
case value2:
// code for value2
break;
default:
// code for default block
break;
}The default block is also an optional block,
default: cout << "The student does not exist."; break;
The default block is only executed none of the cases matches. And is exactly same as,
else
{
cout << "The student does not exist.";
}For the if -- else -- if code.
#include <iostream>
using namespace std;
int main() {
int rollNumber = 10;
switch (rollNumber) {
case 1:
cout << "Ronald";
case 2:
cout << "John";
case 3:
cout << "Murali";
case 4:
cout << "Satish";
case 5:
cout << "Debasish";
default:
cout << "The student does not exist.";
}
return 0;
}
In the above code, we are checking for the student whose roll number is 10. And since roll number 10 does not exist, the default block is executed.