-3

我试图为我的大学执行这个脚本

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

有人帮忙吗?

4

1 回答 1

3

我想你误解了如何使用该switch语句switch用于根据条件分支代码,在您的情况下x,采用不同的整数值。它不适合像您一样使用双精度值。

正确的 switch 表达式如下所示:

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;
}   

但是,比较浮点值是否相等是个坏主意。通常最好执行以下操作:

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;
}
于 2013-10-26T16:34:29.450 回答