c++ switch 枚举报错
时间: 2023-10-24 07:33:59 浏览: 90
在C语言中,使用switch语句对枚举类型进行操作时,有时会导致编译器报错。根据引用[1]所提供的错误信息,错误提示是 "invalid conversion from 'int' to 'main()::Week' ",意味着在赋值给枚举变量时发生了类型转换错误。要解决这个问题,你可以使用类型转换来明确将整数类型转换为枚举类型。具体的解决方法是将赋值语句改为:`today = (enum Week)p->tm_wday;`
另外,引用提供了一个关于枚举的示例程序。在这个示例程序中,通过声明一个枚举类型enum Week和一个与时间相关的结构体struct tm,然后使用switch语句根据当前星期几来输出相应的信息。这段代码在编译时可能会出现错误,原因是编译器对枚举类型的处理可能存在差异。这也是为什么在使用不同的编译器时,可能会出现编译错误或警告的原因。因此,根据你的编译环境选择合适的解决方案是很重要的。
另外,引用提到在Java语言中,不允许使用赋值符号 "=" 为枚举常量赋值。但是在C语言中,是允许使用赋值符号 "=" 来为枚举常量赋值的。这是两种不同语言的语法规则的区别。
总结来说,当你在C语言中使用switch语句操作枚举类型时,要注意可能会出现编译错误或警告的情况。解决这个问题的方法包括使用类型转换来明确转换整数类型为枚举类型,并根据具体的编译环境选择适当的解决方案。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
阅读全文