关于C语言中枚举类型 枚举变量可以赋值为不在范围内的值吗?如下边的程序:
#include<stdio.h>enumcolor_type{RED,HAT,BLUE};intmain(){enumcolor_typecolor;color=HAT...
#include <stdio.h>
enum color_type {RED,HAT,BLUE};
int main()
{
enum color_type color;
color=HAT;
color='a';
printf("%d\n",color);
return 0;
}
此程序我用我的VC6.O编译错误 ,但千锋培训上边演示的却可以通过 网址为http://v.youku.com/v_show/id_XMjQ1NDA1NjU2.html (大该在13分钟的时候 讲的) 请高手帮我分析下怎么回事
就是说我已经定义了枚举元素只有以下三个 enum color_type {RED,HAT,BLUE};
然后再执行这个语句 color='a';是否正确 展开
enum color_type {RED,HAT,BLUE};
int main()
{
enum color_type color;
color=HAT;
color='a';
printf("%d\n",color);
return 0;
}
此程序我用我的VC6.O编译错误 ,但千锋培训上边演示的却可以通过 网址为http://v.youku.com/v_show/id_XMjQ1NDA1NjU2.html (大该在13分钟的时候 讲的) 请高手帮我分析下怎么回事
就是说我已经定义了枚举元素只有以下三个 enum color_type {RED,HAT,BLUE};
然后再执行这个语句 color='a';是否正确 展开
3个回答
展开全部
追问
谢谢您 但还有一点不太明白 就是既然把‘a’强制转换成了 color_type类型,那转换后的值不是就得在{0,1,2}之间才行吗? 得到字符a的ASCII码97也可以吗?
这是不是不符合枚举的初衷了啊?
追答
枚举的本质就是int,只不过限定了一个范围。
强制转换时将其转换为int,而不会检查其是否超出范围。
检查神马的都是编译器的工作。那个视频里的gcc貌似就不检查范围,而我们用的VC++6.0是检查的。不过强制转换的时候VC++6.0也不检查。
展开全部
貌似是需要强制类型转换
color=(color_type)'a';
结果为97
color=(color_type)'a';
结果为97
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Type
cmd=(Stop,Start);
var
cmdtype: cmd;
begin
cmdtype := Stop;
end;
if constA in cmd then...
我觉得应该是这样吧?
cmd=(Stop,Start);
var
cmdtype: cmd;
begin
cmdtype := Stop;
end;
if constA in cmd then...
我觉得应该是这样吧?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询