int main(int argc, char const *argv[])
{
int i =0;
switch (i)
{
case 1 :
break;
case 0.1 :
break;
case -0.1 :
break;
case -1 :
break;
case 1.1+0.9 :
break;
case 1 + 2 :
break;
case 5/2 :
break;
case 'A' :
break;
case "A" :
break;
}
return 0;
}
编译结果:
switch.c: In function ‘main’:
switch.c:10:3: error: case label does not reduce to an integer constant
case 0.1 :
^
switch.c:13:3: error: case label does not reduce to an integer constant
case -0.1 :
^
switch.c:19:3: error: case label does not reduce to an integer constant
case 1.1+0.9 :
^
switch.c:31:3: error: case label does not reduce to an integer constant
case "A" :
^
原因是case后面必须是常量表达式,因为这个值必须在编译时计算出来。