Q:

Error: case label does not reduce to an integer constant in C

belongs to collection: C Common Errors Programs

0

Error: case label does not reduce to an integer constant in C

This is an example of switch case in C programming language, switch case is used to check/jump on matched case value and then it executes given statement in the case block.

In the switch case statement, a case can only have integral constant values i.e. integer or character type constant value. We cannot use any variable as case value.

All Answers

need an explanation for this answer? contact us directly to get an explanation for this answer

In this example, we are using case b: and b is a variable. Thus, error case label does not reduce to an integer constant occurs.

Example:

#include <stdio.h>

int main()
{
    int a,b;
    
    a=2;
    b=2;
    
    switch(a){
        case 1:
            printf("Case 1\n");
            break;
        
        case b:
            printf("Case 2\n");
            break;
    }
    
	return 0;
}

Output

prog.c: In function ‘main’:
prog.c:15:9: error: case label does not reduce to an integer constant
         case b:
         ^~~~
prog.c:5:11: warning: variable ‘b’ set but not used [-Wunused-but-set-variable]
     int a,b;
           ^

How to fix?

To fix the error case label does not reduce to an integer constant, use value 2 instead of variable b. The correct statement will be case 2:

Correct code:

#include <stdio.h>

int main()
{
    int a,b;
    
    a=2;
    b=2;
    
    switch(a){
        case 1:
            printf("Case 1\n");
            break;
        
        case 2:
            printf("Case 2\n");
            break;
    }
    
	return 0;
}

Output

Case 2

need an explanation for this answer? contact us directly to get an explanation for this answer

total answers (1)

Error: duplicate case value in C... >>
<< Error: \'else\' without a previous \...