【发布时间】:2014-07-26 11:19:37
【问题描述】:
enum Maximum_Value{
MAXIMUM_VALUE_1 = 0,
MAXIMUM_VALUE_7 = 1,
MAXIMUM_VALUE_15 = 2,
MAXIMUM_VALUE_26 = 3,
MAXIMUM_VALUE_34 = 4
};
int value_from_function = functionetc();
switch(value_from_function){
MAXIMUM_VALUE_1: printf("MAXIMUM_VALUE_1 :%x\n",value_from_function); break;
MAXIMUM_VALUE_7: printf("MAXIMUM_VALUE_7 :%x\n",value_from_function); break;
MAXIMUM_VALUE_15: printf("MAXIMUM_VALUE_15 %x\n",value_from_function); break;
MAXIMUM_VALUE_26: printf("MAXIMUM_VALUE_26 %x\n",value_from_function); break;
MAXIMUM_VALUE_34: printf("MAXIMUM_VALUE_34 %x\n",value_from_function); break;
default: printf("default :%x\n",value_from_function);
}
上面的代码似乎总是命中默认语句,打印“default :0”,即使它应该命中 MAXIMUM_VALUE_1。
我尝试将 switch 中的变量强制转换为无效
我想我应该将返回值保存到“Maximum_Value”类型的变量中,但是为什么代码仍然不起作用?
编辑:感谢大家指出非常愚蠢的错误:P。问题的根源是从 systemverilog 复制代码,它使用“case”作为关键字而不是“switch”,并且每个 case 开头都不需要“case”
【问题讨论】:
-
this question 的可能重复项。
-
你的
switch中好像没有case?? -
您在每个标签前都缺少
case关键字! -
不是重复的,只是更愚蠢:P
-
很遗憾我不能删除这个,因为这是一个简单的错字,不是一个重要的问题
标签: c++ enums switch-statement