我正在尝试在!=
语句中使用==
和switch
之类的运算符,但是在完成所有测试后,我找不到解决方法无需使用if
语句。
我尝试将运算符放在case
之前和之后的值。
这是我尝试过的:
int main(){
int value = 12;
switch(value){
case != 12:
cout << "Inequal \n";
break;
default:
cout << "The value is 12 \n";
}
}
答案 0 :(得分:7)
听起来您正在尝试使用case
标签中的相等运算符比较某种变量。您只能在case
关键字和:
之间放置一个常量表达式。参见:https://en.cppreference.com/w/cpp/language/switch
attr(可选)
case constant_expression : statement
此外,以下约束也适用:
constant_expression-与转化和积分提升后的条件类型相同的常量表达式
由于相等运算符的结果为布尔值,所以即使它是常量表达式,也将要求switch
部分内的类型也为布尔值。您不能为此使用等于运算符,除非将它们用作常量表达式,并且开关的类型为布尔值。
答案 1 :(得分:2)
不。 switch语句中的case语句需要是编译时间常数。如果需要基于运行时结果进行切换,则需要使用if / else。
答案 2 :(得分:1)
您不能在case
语句中使用运算符,只能使用按原样与switch
条件进行比较的常量。
但是,对于所显示的特定示例,您可以稍微调整代码以实现所需的结果:
int main(){
int value = 12;
switch(value){
case 12:
cout << "The value is 12 \n";
break;
default:
cout << "Inequal \n";
}
}
但这并不比简单的if/else
好:
int main(){
int value = 12;
if (value == 12) {
cout << "The value is 12 \n";
} else {
cout << "Inequal \n";
}
}
int main(){
int value = 12;
if (value != 12) {
cout << "Inequal \n";
} else {
cout << "The value is 12 \n";
}
}