Sta*_*low 1 c++ enums switch-statement
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);
}
Run Code Online (Sandbox Code Playgroud)
上面的代码似乎总是点击默认语句,打印"default:0",即使它应该达到MAXIMUM_VALUE_1.
我已经尝试在切换中将变量转换为无效
我想我应该将返回值保存到"Maximum_Value"类型的变量中,但为什么代码不能正常工作呢?
编辑:感谢你指出每个人都非常愚蠢的错误:P.问题的根源是从systemverilog复制编码,它使用'case'作为关键字而不是'switch',并且在每个案例的开头都不需要'case'
枚举器不是标签,但是switch语句跳转到标签.您case用来创建标签switch语句可以跳转到:
case MAXIMUM_VALUE_1: ...; break;
Run Code Online (Sandbox Code Playgroud)