案例值的名称是什么?

时间:2014-01-01 22:02:18

标签: c++

我有这个:

#define ONE 1
#define TWO 2

switch {
    case ONE: {
        return ONE * ONE;
    }

    case TWO: {
        return TWO * TWO;
    }
}

我想这样做:

#define ONE 1
#define TWO 2

switch {
    case ONE:
    case TWO:
     {
        return name_of_the_case_value * name_of_the_case_value;
    }

}

现在,我应该放什么而不是name_of_the_case_value?适用于ONE或TWO的东西。 是否有一个预定义的变量,如__name_of_the_case_value,它保存当前案例值的名称?

3 个答案:

答案 0 :(得分:3)

无论你在switch(variable)部分放置什么变量,你只需在案例中重复使用。

e.g。

int var;

//some code that sets the value of var

switch(var){
    case ONE:
    case TWO:
        return var * var;
    default:
        break;
}

你不能只有

switch{
    case WHATEVER1:
    case WHATEVER2:
    etc...
}

caseswitch开头需要的变量/表达式的值有关。

答案 1 :(得分:1)

你不能拥有这个:

#define ONE 1
#define TWO 2

switch {
    case ONE: {
        return ONE * ONE;
    }

    case TWO: {
        return TWO * TWO;
    }
}

switch需要根据以下内容切换值:所以你有:

switch (my_value) {
    case ONE: {
        return ONE * ONE;
    }

    case TWO: {
        return TWO * TWO;
    }
}

因此您的问题已得到解答,因为您可以在my_value中使用case

答案 2 :(得分:0)

这种结构

#define ONE 1
#define TWO 2

switch {
    case ONE: {
        return ONE * ONE;
    }

    case TWO: {
        return TWO * TWO;
    }
}

无效,因为switch语句需要表达式。案例标签对应于表达式的可能值。因此,如果控件被传递给例如案例ONE:那么这意味着表达式的值等于ONE。考虑到这一点,你可以写

#define ONE 1
#define TWO 2

switch ( expr ) {
    case ONE: 
    case TWO: {
        return expr * expr;
    }
}