Learnerslesson
   JAVA   
  SPRING  
  SPRINGBOOT  
 HIBERNATE 
  HADOOP  
   HIVE   
   ALGORITHMS   
   PYTHON   
   GO   
   KOTLIN   
   C#   
   RUBY   
   C++   




C++ - SWITCH - CASE


C++ Switch - Case statement is almost same as the if -- else statement.


Let us understand C++ Switch - Case with the below example.

Example :

Say you are a class teacher and there are only 5 students in your class.

And you have marked them with their Roll Numbers and their Names.




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.


Example :



#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;
}


Output :



  John

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?


Rewriting the above program with C++ Switch - Case


Example :



#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;
}


Output :



  John

Now, if you look at the current code. It is quite cleaner, compared to the if -- else -- if code.


int rollNumber = 2;
java_Collections


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.

java_Collections

C++ Switch - Case Syntax


switch(expression/variable) {
	case value1:
		// code for value1
	break;
	case value2:
		// code for value2
	break;
	default:
		// code for default block
	break;
}

What is the use of default in C++ switch - case?


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.


Rewriting the above C++ Switch - case code, to check the use of default keyword


Example :



#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;
}


Output :



  The student does not exist.

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.


Note : Switch case cannot be used in C++ strings.