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.