相关疑难解决方法(0)

为什么我不能在switch-case语句中有变量?

这是我的代码:

bool Character::keyPress(char c)
{
    switch(c)
    {
        case up_key:
            move(0, -1);
            break;

        case down_key:
            move(0, 1);
            break;

        case left_key:
            move(-1, 0);
            break;

        case right_key:
            move(1,0);
            break;

        default:
            return false;
    }

    return true;
}
Run Code Online (Sandbox Code Playgroud)

并且编译器抱怨:

error C2051: case expression not constant
error C2051: case expression not constant
error C2051: case expression not constant
error C2051: case expression not constant
Run Code Online (Sandbox Code Playgroud)

在我的头文件中,我有:

protected:
    char up_key;
    char down_key;
    char right_key;
    char left_key;
Run Code Online (Sandbox Code Playgroud)

我正在使用Visual C++ 2008.

c++ switch-statement

11
推荐指数
2
解决办法
3万
查看次数

可以切换语句使用变量吗?

下面是声明两个int变量并尝试在switch语句中使用它们的代码.这是C++中的合法操作吗?如果没有,为什么不呢?

int i = 0;
int x = 3;
switch (i)
{
    case x:
    // stuff
    break;

    case 0:
    // other stuff
    break;
}
Run Code Online (Sandbox Code Playgroud)

c++ switch-statement

4
推荐指数
1
解决办法
159
查看次数

为什么case语句只接受常量?

C++中的switch语句必须用常量编写的原因是什么?

我们来看看下面的代码:

switch(variable)
{
    case 1:
    case 2:
    case 3:
    case 4:
        //Code 1
        break;

    case 5:
    case 6:
    case 7:
    case 8:
        //Code 2
        break;

    default:
        //Code 3
        break;
}
Run Code Online (Sandbox Code Playgroud)

在其他语言中,例如PAWN(C-Like脚本语言),我可以这样写下这段代码:

switch(variable)
{
    case 1 .. 4:
        //Code 1
        break;

    case 5 .. 8:
        //Code 2
        break;

    default:
        //Code 3
        break;
}
Run Code Online (Sandbox Code Playgroud)

从石器时代开始,C++ switch语句是洙的原因是什么?(更不用说我们不能使用变量了.)

即使经过这么多年的这么多变化和更新......

c++ switch-statement c++11

3
推荐指数
1
解决办法
205
查看次数

为什么C++ switch语句仅限于常量表达式?

在我意识到语句需要是常量之前,我想在switch语句中使用宏函数.示例(不编译):

#define BAND_FIELD1(B)   (10 * B + 1)
...
#define BAND_FIELD7(B)   (10 * B + 7)

int B = myField % 10;
switch (myField) {
    case BAND_FIELD1(B):
        variable1[B] = 123;
        break;
    case BAND_FIELD7(B):
        variable7[B] = 321;
        break;
    ...
}
Run Code Online (Sandbox Code Playgroud)

我宁愿使用if .. else:

if (myField == BAND_FIELD1(B)
    variable1[B] = 123;
else if (myField == BAND_FIELD7(B)
    variable7[B] = 321;
Run Code Online (Sandbox Code Playgroud)

为什么C++ switch语句仅限于常量表达式?

c++ switch-statement

3
推荐指数
3
解决办法
1839
查看次数

标签 统计

c++ ×4

switch-statement ×4

c++11 ×1