社区
C语言
帖子详情
把整型赋给一个枚举类型变量时必须强制类型转换吗?
daibao9922
2004-12-06 10:37:26
我在许多C书籍中都看到"把整型赋给一个枚举类型变量时必须强制类型转换"这句话(包括谭浩强强的那本),但我在TurboC2.0中输入如下程序:
main(){
enum letter{a,b,c,d}zz;
zz=0; /* this line */
if(zz==a)
printf("zz==a");
else
printf("zz!=a");
}
却输出了zz==a,这说明整型的数0可以赋给zz,是书中写错了吗?
请高手解释一下,谢谢
...全文
1623
14
打赏
收藏
把整型赋给一个枚举类型变量时必须强制类型转换吗?
我在许多C书籍中都看到"把整型赋给一个枚举类型变量时必须强制类型转换"这句话(包括谭浩强强的那本),但我在TurboC2.0中输入如下程序: main(){ enum letter{a,b,c,d}zz; zz=0; /* this line */ if(zz==a) printf("zz==a"); else printf("zz!=a"); } 却输出了zz==a,这说明整型的数0可以赋给zz,是书中写错了吗? 请高手解释一下,谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fangrk
2004-12-07
打赏
举报
回复
把整数值赋给一个枚举类型变量时通常需要转换。
比如C中
enum letter{a,b,c,d}zz;
zz=(letter)0;
或者C++中zz=static_cast<letter>(0);
如果没有转换,编译器一般也不会报错,但通常会有一个警告。
daikaiming
2004-12-06
打赏
举报
回复
不是赋值当然不要转换啊!
你给你的枚举型变量赋值为0当然也对啊!!
书是冒错的!!
理解的问题!
mathe
2004-12-06
打赏
举报
回复
同编译器开关有关系。一般来说,这样使用编译器至少会产生Warning的。
但是如果是c编译器(而不是c++),很多编译器会连Warning也没有,但是
大部分c++编译器应该会报错。
比较安全的用法还是加上类型转化。
daibao9922
2004-12-06
打赏
举报
回复
"TC下编译通过,系统自动为枚举类型赋0,1,2,3的值,在VB中枚举类型就是Long型
iming() "
这是不是就意味着在TC下,枚举类型变量可以像整型一样参予各种运算?
iming
2004-12-06
打赏
举报
回复
TC下编译通过,系统自动为枚举类型赋0,1,2,3的值,在VB中枚举类型就是Long型
longx
2004-12-06
打赏
举报
回复
把整型赋给一个枚举类型变量时必须强制类型转换.
枚举类型变量实际上就是整型数值
这里的强制类型转换用于编译器编译时检查,根据各个编译器的实现不同,可以不需要显式转换。
wangjie__
2004-12-06
打赏
举报
回复
个人觉得,enum变量完全可以当成整形变量来使用!
daibao9922
2004-12-06
打赏
举报
回复
"我收回我的话,把int赋给enum是需要显式转换的。
pomelowu(羽战士) "
请问我那小段程序的第三行不就是把int赋给enum吗?
pomelowu
2004-12-06
打赏
举报
回复
我收回我的话,把int赋给enum是需要显式转换的。
pomelowu
2004-12-06
打赏
举报
回复
楼上的**,你看错了~~
zzffrr
2004-12-06
打赏
举报
回复
测试一次不就知道了.
daibao9922
2004-12-06
打赏
举报
回复
我的意思是程序中的第三行和"把整型赋给一个枚举类型变量时必须强制类型转换"这句话有矛盾
pomelowu
2004-12-06
打赏
举报
回复
尽信书不如无书。而且老谭那本书错误多多~~
VC下也能直接赋值的。你查查MSDN看看就知道了。
fangrk
2004-12-06
打赏
举报
回复
zz==a是比较,不是赋给
《C语言基础》 之 第2章
变量
与数据
课程内容:常量、
变量
、基本类型之整形/实型/字符型、有符号数与无符号数、printf函数和scanf函数、算术运算符1、++和--、类型转换(分成两个视频)。
c语言如何给枚举
变量
赋值,
枚举类型
是否可以赋值?
枚举类型
可以被赋值,但其赋值不同于普通
变量
,主要为以下两点:1. 非
枚举类型
值赋值给
枚举类型
>需要借助类型强制转换>举例:typedef enum{Monday = 1, //将
枚举类型
的第
一个
变量
置为1, 则后面的依次为2, 3, 4, 5Tuesday,Wednesday,Thursday,Friday}Weekday;Weekday Working;unsigned cha...
c语言枚举定义
变量
赋值吗,
枚举类型
是否可以赋值?
枚举类型
可以被赋值,但其赋值不同于普通
变量
,主要为以下两点:1. 非
枚举类型
值赋值给
枚举类型
>需要借助类型强制转换>举例:typedef enum{Monday = 1, //将
枚举类型
的第
一个
变量
置为1, 则后面的依次为2, 3, 4, 5Tuesday,Wednesday,Thursday,Friday}Weekday;Weekday Working;unsigned cha...
C语言中 枚举
变量
与枚举值,
枚举类型
变量
再赋值问题
C语言中 枚举
变量
与枚举值,
枚举类型
变量
再赋值问题
如何通过键盘输入
整型
数给枚举
变量
赋值
程序设计中,有
时
会用到由若干个有限数据元素组成的集合,如一周内的星期一到星期日七个数据元素组成的集合,由三种颜色红、黄、绿组成的集合,
一个
工作班组内十个职工组成的集合等等,程序中某个
变量
取值仅限于集合中的元素。此
时
,可将这些数据集合定义为
枚举类型
。因此,
枚举类型
是某类数据可能取值的集合,如一周内星期可能取值的集合为: { Sun,Mon,Tue,Wed,Thu,Fri,Sat}
C语言
69,373
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章