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

Here, we will learn why an error case label does not reduce to an integer constant in C language occurred and how to fix it?
By IncludeHelp Last updated : March 10, 2024

Error: case label does not reduce to an integer constant

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.

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

C Common Errors Programs »


Comments and Discussions!

Load comments ↻






Copyright © 2024 www.includehelp.com. All rights reserved.