Switch-case statements:
These are a substitute for long if statements that compare a variable to several integral values
- The switch statement is a multiway branch statement. It provides an easy way to dispatch execution to different parts of code based on the value of the expression.
- Switch is a control statement that allows a value to change control of execution

Points to remember while using Switch Case
- The expression used in a switch statement must have an integral or character type, or be of a class type in which the class has a single conversion function to an integral or character type.
- There can be any number of case statements within a switch. Each case is followed by the value to be compared to and after that a colon.
- When the variable being switched on is equal to a case, the statements following that case will execute until a break statement is reached.
- When a break statement is reached, the switch terminates, and the flow of control jumps to the next line following the switch statement.
- Not every case needs to contain a break. If no break appears, the flow of control will fall through to subsequent cases until a break is reached i.e. all the case statements will get executed as soon as compiler finds a comparison to be true.
- A switch statement can have an optional default case, which must appear at the end of the switch. The default case can be used for performing a task when none of the cases is true. No break is needed in the default case.
Syntax:
switch (n)
{
case 1: // code to be executed if n = 1;
break;
case 2: // code to be executed if n = 2;
break;
default: // code to be executed if
// n doesn't match any cases
}
Nested-Switch Statement:
Nested-Switch statements refers to Switch statements inside of another Switch Statements.
Syntax:
switch(n)
{
// code to be executed if n = 1;
case 1:
// Nested switch
switch(num)
{
// code to be executed if num = 10
case 10:
statement 1;
break;
// code to be executed if num = 20
case 20:
statement 2;
break;
// code to be executed if num = 30
case 30:
statement 3;
break;
// code to be executed if num
// doesn't match any cases
default:
}
break;
// code to be executed if n = 2;
case 2:
statement 2;
break;
// code to be executed if n = 3;
case 3:
statement 3;
break;
// code to be executed if n doesn't match any cases
default:
}
Example:
// Following is a simple program to demonstrate
// syntax of Nested Switch Statements.
#include <stdio.h>
int main()
{
int x = 1, y = 2;
// Outer Switch
switch (x) {
// If x == 1
case 1:
// Nested Switch
switch (y) {
// If y == 2
case 2:
printf( "Choice is 2");
break;
// If y == 3
case 3:
printf( "Choice is 3");
break;
}
break;
// If x == 4
case 4:
printf( "Choice is 4");
break;
// If x == 5
case 5:
printf( "Choice is 5");
break;
default:
printf( "Choice is other than 1, 2 3, 4, or 5");
}
return 0;
}
// Following is a simple program to demonstrate
// syntax of Nested Switch Statements.
#include <iostream>
using namespace std;
int main()
{
int x = 1, y = 2;
// Outer Switch
switch (x) {
// If x == 1
case 1:
// Nested Switch
switch (y) {
// If y == 2
case 2:
cout << "Choice is 2";
break;
// If y == 3
case 3:
cout << "Choice is 3";
break;
}
break;
// If x == 4
case 4:
cout << "Choice is 4";
break;
// If x == 5
case 5:
cout << "Choice is 5";
break;
default:
cout << "Choice is other than 1, 2 3, 4, or 5";
}
return 0;
}
// This code is contributed by Shubham Singh
// Following is a simple program to demonstrate
// syntax of Nested Switch Statements.
import java.io.*;
class GFG {
public static void main (String[] args)
{
int x = 1, y = 2;
// Outer Switch
switch (x) {
// If x == 1
case 1:
// Nested Switch
switch (y) {
// If y == 2
case 2:
System.out.println("Choice is 2");
break;
// If y == 3
case 3:
System.out.println("Choice is 3");
break;
}
break;
// If x == 4
case 4:
System.out.println("Choice is 4");
break;
// If x == 5
case 5:
System.out.println("Choice is 5");
break;
default:
System.out.println("Choice is other than 1, 2 3, 4, or 5");
}
}
}
// This code is contributed by Shubham Singh
# Following is a simple program to demonstrate
# syntax of Nested Switch Statements.
x = 1
y = 2
# Outer Switch
def switch_x(x):
switcher = {
1: switch_y(y),
4: "Choice is 4",
5: "Choice is 5",
}
return switcher.get(x, "Choice is other than 1, 2 3, 4, or 5")
def switch_y(y):
switcher = {
2: "Choice is 2",
3: "Choice is 3",
}
return switcher.get(y, "")
print(switch_x(x))
# This code is contributed by Shubham Singh
// Following is a simple program to demonstrate
// syntax of Nested Switch Statements.
using System;
public class GFG{
static public void Main ()
{
int x = 1, y = 2;
// Outer Switch
switch (x) {
// If x == 1
case 1:
// Nested Switch
switch (y) {
// If y == 2
case 2:
Console.WriteLine("Choice is 2");
break;
// If y == 3
case 3:
Console.WriteLine("Choice is 3");
break;
}
break;
// If x == 4
case 4:
Console.WriteLine("Choice is 4");
break;
// If x == 5
case 5:
Console.WriteLine("Choice is 5");
break;
default:
Console.WriteLine("Choice is other than 1, 2 3, 4, or 5");
}
}
}
// This code is contributed by Shubham Singh
<script>
// Following is a simple program to demonstrate
// syntax of Nested Switch Statements.
var x = 1, y = 2;
// Outer Switch
switch (x) {
// If x == 1
case 1:
// Nested Switch
switch (y) {
// If y == 2
case 2:
document.write("Choice is 2");
break;
// If y == 3
case 3:
document.write("Choice is 3");
break;
}
break;
// If x == 4
case 4:
document.write("Choice is 4");
break;
// If x == 5
case 5:
document.write("Choice is 5");
break;
default:
document.write("Choice is other than 1, 2 3, 4, or 5");
}
// This code is contributed by Shubham Singh
</script>
Output:
Choice is 2