Skip to content
Related Articles

Related Articles

Data type of case labels of switch statement in C++?
  • Difficulty Level : Easy
  • Last Updated : 14 Aug, 2019

In C++ switch statement, the expression of each case label must be an integer constant expression.

For example, the following program fails in compilation.




/* Using non-const in case label */
#include<stdio.h>
int main()
{
  int i = 10;
  int c = 10;
  switch(c) 
  {
    case i: // not a "const int" expression
         printf("Value of c = %d", c);
         break;
    /*Some more cases */
                     
  }
  return 0;
}


Putting const before i makes the above program work.




#include<stdio.h>
int main()
{
  const int i = 10;
  int c = 10;
  switch(c) 
  {
    case i:  // Works fine
         printf("Value of c = %d", c);
         break;
    /*Some more cases */
                     
  }
  return 0;
}


Note : The above fact is only for C++. In C, both programs produce an error. In C, using an integer literal does not cause an error.

Program to find the largest number between two numbers using switch case:




#include<stdio.h>
int main()
{
  int n1=10,n2=11;
  
  // n1 > n2 (10 > 11) is false so using  
  // logical operator '>', n1 > n2 produces 0
  // (0 means false, 1 means true) So, case 0 
  // is executed as 10 > 11 is false. Here we 
  // have used type cast to convert boolean to int, 
  // to avoid warning.
  
  switch((int)(n1 > n2)) 
  {
    case 0:  
         printf("%d is the largest\n", n2);
         break;
    default:
         printf("%d is the largest\n", n1);
  }
  
  // n1 < n2 (10 < 11) is true so using logical 
  // operator '<', n1 < n2 produces 1 (1 means true, 
  // 0 means false) So, default is executed as we
  // don't have case 1 to be executed.
  
  switch((int)(n1 < n2))
  {
    case 0:  
         printf("%d is the largest\n", n1);
         break;
    default:
         printf("%d is the largest\n", n2);
  }
  
  return 0;
}
//This code is contributed by Santanu


Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

Attention reader! Don’t stop learning now. Get hold of all the important C++ Foundation and STL concepts with the C++ Foundation and STL courses at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up
Recommended Articles
Page :