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

c++ switch [Error] 'x' cannot appear in a constant-expression

本文关键字:常量 表达式 不能 开关 c++ 错误      更新时间:2023-10-16

im 尝试为我的大学执行此脚本

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<<"nn";
return 0;
}

这是代码,错误是:

17  10  ....Untitled1.cpp  [Error] 'x' cannot appear in a constant-expression

有人帮忙吗?

我想你误解了如何使用switch语句。 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;
}   

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

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