我试图为我的大学执行这个脚本
int main()
{
int x;
double y;
Provo:
cout<<"Vlera e X: ";
cin>>x;
switch(x)
{
case ((x)<(0.9)):
y=x*x;
break;
case (x==0.9):
y=2*x;
break;
case 'x>0.9':
y=x-3;
break;
}
cout<<"\n\n";
return 0;
}
这是代码,错误是:
17 10 ....\Untitled1.cpp [Error] 'x' cannot appear in a constant-expression
有人帮忙吗?
答案 0 :(得分:3)
我认为你误解了how to use the switch
statement。 switch
用于根据条件对代码进行分支,在您的情况x
中,使用不同的整数值。它不适合像你一样使用双倍值。
正确的开关表达式如下所示:
switch(x)
{
case 1:
y=x*x;
break;
case 2:
case 3:
case 4:
y=2*x;
break;
case 5:
y=x-3;
break;
}
要完成您想要的操作,请改用if
else
,例如:
if (x < 0.9) {
y=x*x;
else if(x == 0.9) {
y=2*x;
} else {
y=x-3;
}
然而,comparing floating point values for equality is a bad idea。做一些事情通常更好:
double epsilon = <some small value>;
if (x < 0.9-epsilon) {
y=x*x;
else if(x > 0.9+epsilon) {
y=x-3;
} else {
y=2*x;
}