免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5725 | 回复: 10
打印 上一主题 下一主题

枚举变量(不是枚举常量)有什么用? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-03-26 10:28 |只看该作者 |倒序浏览
编译器并不提供对枚举变量的检查,那使用枚举变量的意义何在?
另外,K & R中又说
Nevertheless, enumeration variables offer
the chance of checking and so are often better than #defines.
这个chance是指对代码的手工检查吗?

论坛徽章:
0
2 [报告]
发表于 2010-03-26 11:33 |只看该作者
好处之一是方便理解,比直接使用数字强多了

论坛徽章:
0
3 [报告]
发表于 2010-03-26 13:30 |只看该作者
回复 2# rain_fish

标题已经说过了,是枚举变量,不是问枚举常量。
比如:

typedef enum {
    white,
    black,
    red,
    green
} enum_color;

enum_color color_index;

那么这样定义color_index有什么用处(除了理解代码方面的好处外)?
编译器并不会检查color_index的值是否在white - green之间。

论坛徽章:
0
4 [报告]
发表于 2010-03-26 13:40 |只看该作者
回复 3# x75yan


    “编译器并不提供对枚举变量的检查”,“编译器并不会检查color_index的值是否在white - green之间。”,你的意思是 也可以:enum_color color_index = 100;?

论坛徽章:
0
5 [报告]
发表于 2010-03-26 14:01 |只看该作者
回复  x75yan


    “编译器并不提供对枚举变量的检查”,“编译器并不会检查color_index的值是否在wh ...
rain_fish 发表于 2010-03-26 13:40



    对  可以的...
编译器不会检查这个的..   逻辑上的东西还是需要自己判断....

论坛徽章:
0
6 [报告]
发表于 2010-03-26 14:25 |只看该作者
回复 4# rain_fish

可以

论坛徽章:
0
7 [报告]
发表于 2010-03-26 17:01 |只看该作者
回复 6# x75yan


    #include <stdlib.h>
#include <stdio.h>

typedef enum {
    white,
    black,
    red,
    green
} enum_color;

int main (void)
{
    enum_color color_index = 100;
    return 0;
}

[root@localhost test]# g++ enum.c -o enum
enum.c: In function ‘int main()’:
enum.c:13: error: invalid conversion from ‘int’ to ‘enum_color’

论坛徽章:
0
8 [报告]
发表于 2010-03-26 17:02 |只看该作者
用gcc命令编译的话没有错误显示,应该是参数的问题

论坛徽章:
0
9 [报告]
发表于 2010-03-26 17:31 |只看该作者
回复 8# rain_fish

恩,可能c++的检查要严格一些,但是c语言确实是不检查的

论坛徽章:
0
10 [报告]
发表于 2010-03-26 17:35 |只看该作者
vc下也报错的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP