是否可以在不指定开关变量的情况下编写开关案例代码?说我有两个变量int x和int y。我想根据x和y的不同组合有条件地运行代码。例如
switch
{
case (x==1 && y==1): //do something.
break;
case (x==3 && y==-1): //do something.
break;
case (x==0 && y==3): //do something.
break;
default: //do something.
break;
}
此代码给我错误。
答案 0 :(得分:3)
您可以更好地使用if-else
解决问题
答案 1 :(得分:2)
这并不比
更好地读写if (x==1 && y==1) {
//do something.
}
else if (x==3 && y==-1) {
//do something.
}
else if (x==0 && y==3) {
//do something.
}
else {
//do something.
}
但是,切换案例是不可能的。
答案 2 :(得分:1)
在切换案例中,您不能使用==仅使用值。对于您的情况,请使用if else。
答案 3 :(得分:1)
明显的方式是使用else if
:
if (x==1 && y==1) {
//do something.
}
else if (x==3 && y==-1) {
//do something.
}
else if (x==0 && y==3) {
//do something.
}
else {
// do something as default case.
}
一种变体是使用单独的方法。
好处是您可以使用return
。
if (x==1 && y==1) {
//do something.
return;
}
// precompute something...
if (x==3 && y==-1) {
//do something.
return;
}
if (x==0 && y==3) {
//do something.
return;
}
// do something as default case.
return;
但除非你有嵌套else
分支,否则它没有太大的区别。
但是 case
实际上比if else
带来好处的一个案例就是当您有完整的案例枚举时。它避免了编程错误然后:
switch(direction) {
case NORTH: // Do something
break;
case SOUTH: // Do something
break;
case EAST: // Do something
break;
case WEST: // Do something
break;
}
好处是编译器实际上可以检查您是否需要default
分支。
除非您有完整枚举,否则if
同样出色。
答案 4 :(得分:0)
switch
的重点是基于单个变量的值来做某事,而且,只测试相等性。在您的情况下,您可以使用一系列else-if
s。
if (x==1 && y==1) {
// do something
} else if (x==3 && y==-1) {
// do something
} else if (x==0 && y==3) {
// do something
} else {
// do something (default)
}
答案 5 :(得分:0)
Hwre是switch case的语法
switch ( expression ) statement
labeled-statement:
case constant-expression : statement
default : statement
清楚地表明你必须通过
表达式开关(exp)
所以你不能离开它。
答案 6 :(得分:0)
将开关参数保留为真
switch(true)
{
case (x==1 && y==1): //do something.
break;
case (x==3 && y==-1): //do something.
break;
case (x==0 && y==3): //do something.
break;
default: //do something.
break;
}