我有这个:
#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,它保存当前案例值的名称?
答案 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...
}
case
与switch
开头需要的变量/表达式的值有关。
答案 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;
}
}