变量在切换情况下不起作用

时间:2016-02-25 16:03:39

标签: c++ arrays boolean

当我尝试编译以下内容时:

bool matrix[h][w];

bool c = 0;
switch(1) // was close?
{
  case matrix[y][x-1]: // up 1
  case matrix[y-2][x-1]: // down 1
  case matrix[y-1][x]: // right 1
  case matrix[y][x-2]: // left 1
    c = 1;
    break;
}

返回the value of 'matrix' is not usable in a constant expression。我做错了什么?

1 个答案:

答案 0 :(得分:7)

case语句中使用的表达式需要是编译时常量。您可以使用:

case 1:

case 2:

等,不是

case matrix[y][x-1]: // up 1

case matrix[y-2][x-1]: // down 1

此外,switch()的操作数应该是运行时变量,而不是编译时常量。例如,switch(matrix[y][x-1])就可以了。