关于switch的使用
#include<stdio.h>#include<math.h>
int main()
{
float y;
int x, i;
scanf("%d", &x);
switch (x)
{
case x>=0&&x<10: y=cos(x+3.0);printf("%.5f", y);
break;
case x>=10&&x<20: y=cos(x+7.5)*cos(x+7.5);printf("%.5f", y);
break;
case x>=20&&x<30: for (i=0,y=1;i<=3;i++) y*=cos(x+4.0);printf("%.5f", y);
break;
default: printf("Not define");
}
return 0;
}
它会给出如下错误:
11 3 C:\Users\dell\Desktop\C语言练习\飞矢不坠.c case label does not reduce to an integer constant
13 3 C:\Users\dell\Desktop\C语言练习\飞矢不坠.c case label does not reduce to an integer constant
请问怎么处理 case 不能是一个表达式 case 数值 学习学习,涨涨经验 switch(var){
case value1:
break;
...
}
其中case value1分支语句等价于 if( var == value ),并不是像你使用的那样用判别式的true/false来选择是否执行。换句话说,其实你使用的第一个case分支语句等价于 if( x == (x>=0&&x<10) ),这在逻辑上是不对的。然后,分支case的值必须是整型常量(在error信息中写的是末尾的 integer constant)。要实现你所希望的逻辑,应该使用if-else语句。
页:
[1]