| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2759 人关注过本帖
标题:关于enum变量的取值范围
只看楼主 加入收藏
ccj_999
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-5-24
收藏
 问题点数:0 回复次数:12 
关于enum变量的取值范围

#include<iostream.h>
int main()
{

enum flag {x=1,y=2,z=4,e=8};
flag f=flag(99);
cout<<f<<endl;
return 0;
}

这段程序编译成功并且运行结果是:99
可是flag变量的取值范围不应该是:0-15么?搞不懂了:(

搜索更多相关主题的帖子: 变量 enum 范围 
2006-09-10 16:51
眼底星空
Rank: 4
等 级:业余侠客
威 望:3
帖 子:85
专家分:289
注 册:2006-9-2
收藏
得分:0 
flag变量的取值范围为什么是0-15? 不就是1,或2,或4,或8??

flag f=flag(99);

这句是将99(int)强制转换成flag(enum)

如将int强制转换成enum,就算enum中没有这一值存在,同样会转换成功 enum就是当int处理的。

无为而为 && 每天进步一小点...
2006-09-10 17:28
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

2楼,你没理解LZ的意思,书上也是这样说的,如果元素都是正,范围是[0:2^k-1]

按道理那是错误的。

至于原因,我也不知道,不过似乎不是2楼说的那样啊


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-09-10 17:52
眼底星空
Rank: 4
等 级:业余侠客
威 望:3
帖 子:85
专家分:289
注 册:2006-9-2
收藏
得分:0 

了解了 谢楼上 都不记得有这点知识了


无为而为 && 每天进步一小点...
2006-09-10 18:17
ww84020209
Rank: 1
等 级:新手上路
帖 子:190
专家分:0
注 册:2006-8-21
收藏
得分:0 
是那本书上说的,我怎么没看过啊?

2006-09-10 19:44
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
引用The c++ programing language:
enum e1{dark,light};
enum e2{a=3,b=9}; 那么e2 ee=(e2)12;是可以的,因为在都为正数的情况下,范围是0到最小的2的幂,这里是2的4次方。也就是[0:2^4-1];
enum e3{m=-123,n=213};[-2^k:2^k-1].

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-09-10 20:05
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 

在 新版中, enum 由它後面的標識決定範圍. 默認是 int. 在範圍內的不會有偏差, 超出範圍值會發生變化.

enum flag: int {a, b, c};
enum flag: char {a, b, c};
enum flag: short{a, b, c};
enum flag: long {a, b, c};
enum flag: bool { a, b, c};

可以使用 signed / unsigned


原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-09-10 23:55
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
enum flag: int {a, b, c};
enum flag: char {a, b, c};
enum flag: short{a, b, c};
enum flag: long {a, b, c};
enum flag: bool { a, b, c};

这种写法可以吗?
为什么我编译出错呢?

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-09-11 08:47
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
struct STRUCT
{
int a:2;
int b:3;
int c:2;
};

这里的a:2什么的,是什么意思啊?

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-09-11 08:49
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 

是位域
表示分给他的位数


嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-09-11 09:09
快速回复:关于enum变量的取值范围
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.063970 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved