Expression in switch case



We have already studies the expression in c programming and some basic rules of switch case statement. In this tutorial we will be learning, how expression in switch case is evaluated ?

Expression in switch case

void main()
{
 int choice = 2 ;
 switch(choice)
 {
  case 1 :
        printf("Inside case 1");
        break;
  case 7-8+3 :
        printf("Inside case 7-8+3");
        break;
  case 9/3 :
        printf("Inside case 9/3");
        break;
 }
}

Output :

Inside case 7-8+3

Explanation

Using expression in switch case is absolutely allowed in c programming. Expression should be in such a way that result of expression should be integer constant

case 7-8+3 :
    printf("Inside case 7-8+3");
    break;

In this case expression evaluation will be like this -

case 7-8+3 = case 7 - 8 + 3
           = case -1 + 3
           = case 2

So we can say that case 7-8+3 expression is equivalent to case 2

Tricky examples

Example 1 : Use of variable in switch case

In this type of example, If a variable is used to evaluate expression in switch case then it may provide result which is completely dynamic and variable dependent.

case a+1 :
    printf("Inside case 7-8+3");
    break;

The case would be -

Value of a Value of case a+1 Explanation
1 case 2 It becomes case 2 if value of variable is 1
2 case 3 It becomes case 3 if value of variable is 2
3 case 4 It becomes case 4 if value of variable is 3

We have already seen such kind of example where we have used variable in switch case statement.

Example 2 : Repeated evaluation of expression in switch case

case 7-8+3 :
     printf("Inside case 7-8+3");
     break;
case 9/3-1 :
     printf("Inside case 9/3-1");
     break;
case 7+1-6 :
     printf("Inside case 7+1-6");
     break;

In this case all the expressions are evaluated to case 2, so it is again confusing condition if we use expression in switch case.

So it is recommended to use expression in such a way that evaluation result of each expression is unique