标签不会减少为整数常量

2 c switch-statement

运行此c程序时出错.我得到一个错误,如"案例标签不会减少到一个整数常量".帮助我找到错误.我是c的新手,几个星期前就开始了.谢谢你

 #include<stdio.h>
 main()  
  { int a,b,c;
  scanf("%d",&c);
   if (c<5) {
    c==a  ;
   }
   else { c==b;
   }
    switch (c)
   {
    case a:
       printf ("statement1");
       break;
    case b :
       printf(" statement2");
     break;
    }
    }
Run Code Online (Sandbox Code Playgroud)

cni*_*tar 7

在C中,您似乎c#因某种原因而调用,case标签必须是整数常量.

6.8.4.2-3

每个case标签的表达式应为整数常量表达式,并且同一switch语句中的两个case常量表达式在转换后不应具有相同的值.

不确定这是否是您想要的,但您可以尝试:

switch (c) {
case 'a':
    break;
case 'b':
    break;
}
Run Code Online (Sandbox Code Playgroud)

否则,也许你想要

if (c == a)
    /* ... */
else if (c == b)
    /* ... */
else
    /* ... */
Run Code Online (Sandbox Code Playgroud)

作为旁注,你可能想要c=a而不是c==a.