永发信息网

关于C语言中枚举类型 枚举变量可以赋值为不在范围内的值吗?如下边的程序:

答案:3  悬赏:70  手机版
解决时间 2021-11-26 13:25
关于C语言中枚举类型 枚举变量可以赋值为不在范围内的值吗?如下边的程序:
最佳答案
color_type类型是对一个变量取值范围的限定,而花括号内是它的取值范围,即color_type 类型
的变量color 只能取值为花括号内的任何一个值,如果赋给该类型变量的值不在列表中,则会报错。
我看了一下你提供的教学视频,他是在ubuntu系统下编译的,linux的编译器肯定有所不同。据我所知,变量值超出范围在microsoft的编译器这边都会报错。

上面所说的强制转换:一个原本不是color_type类型的变量被你硬生生转换成该类型,没有实际意义。字符a被你转换成color_type类型,当然可以赋值啦。追问谢谢您 但还有一点不太明白 就是既然把‘a’强制转换成了 color_type类型,那转换后的值不是就得在{0,1,2}之间才行吗? 得到字符a的ASCII码97也可以吗?
这是不是不符合枚举的初衷了啊?追答枚举的本质就是int,只不过限定了一个范围。
强制转换时将其转换为int,而不会检查其是否超出范围。

检查神马的都是编译器的工作。那个视频里的gcc貌似就不检查范围,而我们用的VC++6.0是检查的。不过强制转换的时候VC++6.0也不检查。
全部回答
Type
cmd=(Stop,Start);

var
cmdtype: cmd;
begin
cmdtype := Stop;
end;

if constA in cmd then...
我觉得应该是这样吧?
貌似是需要强制类型转换
color=(color_type)'a';

结果为97
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
2011年12月大学英语四级477分属于什么水平,
2015年近去世的政界官员
华硕电脑A45VM、显卡GT630第三代处理器、、、
描写美女配好车的成语
长期切菜指甲被刀磨得很薄 有什么好的办法处
我国第5个考察站选择哪里?
宣统年间是那几年?
当归20赤芍20炙甘草20川芎20红参20阿胶15肉桂
吧友中有没有做铁艺生意的
由成都开往西安南火车站k1616次列车大概几点
请问Excel公式=ROUND(C15-F15,2)是什么意思呀
+213 5 52950251是哪里号码
德宏属于贫困地区吗?
求助2个月德牧带回家2天开始呕吐白色粘稠物
女孩子名字中有毓可以和哪个带金的字搭配
推荐资讯
二十四减九先算多少减多少再算多少加多少
肉丝青椒扁豆的做法,肉丝青椒扁豆怎么做好吃
610625199210150969身份证在志丹县哪里上班
生茄子加蜂蜜和水泡有什么功效
腔排一锅焖的家常做法大全怎么做好
清远 洲心吊烧鸡在那买!~
高考遗传图解到第几代就不要写胚子了 没钱了
补充成语接龙: 1.堂堂正正——(正中下怀)——
(384-264)÷24*202简便计算方法
海神门符去哪里请
天降之物和天降之物F到底好看吗,有人说它太
求一段相声里的绕口令
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?