c ++开关[错误]'x'不能出现在常量表达式中

时间:2013-10-26 16:29:40

标签: c++

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

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
有人帮忙吗?

1 个答案:

答案 0 :(得分:3)

我认为你误解了how to use the switch statementswitch用于根据条件对代码进行分支,在您的情况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;
}