回 帖 发 新 帖 刷新版面

主题:[讨论]C语言新手问个白痴问题,请解读

先说一下,我是新手。我看的C语言入门经典上那本书里
提到枚举的时候说,初始化的时候可以这么写:
enum Weekday {Monday, Tuesday, Wednesday, Thursday,Friday, Saturday, Sunday} today = Monday, tomorrow = today + 1;


但是我在VC++6.0里编译的时候,确有错误,提示是error C2440: 'initializing' : cannot convert from 'int' to 'enum main::Weekday'
        Conversion to enumeration type requires an explicit cast (static_cast, C-style cast or function-style cast)


我看不太懂,请问该怎么解决这个问题,多谢啦

回复列表 (共4个回复)

沙发

tomorrow = today + 1;//枚举类型不能当做变量进行加减运算

板凳


那这个和我书上就看的不一样了

3 楼

改成这样看可以么:
enum Weekday {Monday, Tuesday, Wednesday, Thursday,Friday, Saturday, Sunday} today = Monday, tomorrow = (enum Weekday)((int)today + 1);

4 楼

[quote]改成这样看可以么:
enum Weekday {Monday, Tuesday, Wednesday, Thursday,Friday, Saturday, Sunday} today = Monday, tomorrow = (enum Weekday)((int)today + 1);

[/quote]

哦,多谢,原来要进行强制转化。
看来书上的未必都对。
我试了一下 去掉today前面的int也可以运行的,我想是不是编译器编译today+1的时候把today转化成了int类型的。所以给tomorrow赋值的时候再转化回枚举的。

我来回复

您尚未登录,请登录后再回复。点此登录或注册