4

是否可以在不指定 switch 变量的情况下编写 switch case 代码?假设我有两个变量 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;
}

这段代码给了我错误。

4

7 回答 7

3

保持开关参数为真

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;
}
于 2019-12-04T08:56:24.373 回答
2

您可以更好地使用 aif-else来解决您的问题

于 2012-12-02T15:18:53.543 回答
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分支,否则它不会有很大的不同。

实际上有好处的一个案例caseif 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一样好。

于 2012-12-02T15:30:39.837 回答
1

这并没有真正读或写比

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

但是,是的,使用开关盒是不可能的。

于 2012-12-02T15:17:26.967 回答
0

在开关情况下,您不能使用 == 仅使用值。如果其他情况,请根据您的情况使用。

于 2012-12-02T15:19:42.447 回答
-1

的重点switch是根据单个变量的值做一些事情,而且,只测试相等性。在您的情况下,您可以使用一系列else-ifs。

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)
}
于 2012-12-02T15:26:51.477 回答
-1

Hwre 是 switch case 的语法

switch ( expression ) statement
labeled-statement:
case constant-expression : statement
default : statement

清楚地表明你必须在switch(exp)
中传递表达式, 所以你不能离开它。

于 2012-12-02T15:27:54.887 回答