| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 546 人关注过本帖
标题:关于枚举
只看楼主 加入收藏
未来大仙
Rank: 6Rank: 6
来 自:黑窟窿
等 级:侠之大者
威 望:4
帖 子:263
专家分:491
注 册:2015-6-20
结帖率:70%
收藏
 问题点数:0 回复次数:6 
关于枚举
枚举 enum XX{。。。}  定义了一个新的类型。。然后括号里面的是 变量 如何把这些变量用在后面的表达式上? 如何输出这些变量?
搜索更多相关主题的帖子: 表达式 如何 
2015-07-27 01:05
未来大仙
Rank: 6Rank: 6
来 自:黑窟窿
等 级:侠之大者
威 望:4
帖 子:263
专家分:491
注 册:2015-6-20
收藏
得分:0 
以下是引用未来大仙在2015-7-27 01:05:06的发言:

枚举 enum XX{。。。}  定义了一个新的类型。。然后括号里面的是 变量 如何把这些变量用在后面的表达式上? 如何输出这些变量?

比如,我用了 enum XX{A=1,B,C,D};        我最后怎么在输出的时候输出的是A,B,C,D 而不是,1,2,3,4。。。

好好学习,天天向上!
2015-07-27 01:26
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:0 

自己看,CPP上的代码!看不明白请看CPP第五版中文版407页到408页
CPP第五版英语版509页到510页
最好是这章全看一篇,我是自学了,楼主你问我枚举是什么,我只能告诉你
不懂才问版主以经告诉过你一次了,本掌柜就不多说什么了
https://bbs.bccn.net/thread-455549-1-1.html

#include <stdio.h>
#include <string.h>
#include <stdbool.h>
enum spectrum {red, orange, yellow, green, blue, violet};
const char * colors[] = {"red", "orange", "yellow",
                        "green", "blue", "violet"};
#define LEN 30
int main(void)
{
    char choice[LEN];
    enum spectrum color;
    bool color_is_found = false;
    puts("Enter a color (empty line to quit):");
    while (gets(choice) != NULL && choice[0] != '\0')
    {
        for (color = red; color <= violet; color++)
        {
            if (strcmp(choice, colors[color]) == 0)
            {
                color_is_found = true;
                break;
            }
        }
        if (color_is_found)
            switch(color)
            {
                case red :
                    puts("Roses are red.");
                    break;
                case orange :
                    puts("Poppies are orange.");
                    break;
                case yellow :
                    puts("Sunflowers are yellow.");
                    break;
                case green :
                    puts("Grass is green.");
                    break;
                case blue :
                    puts("Bluebells are blue.");
                    break;
                case violet :
                    puts("Violets are violet.");
                    break;
            }
        else
            printf("I don't know about the color %s.\n", choice);
        color_is_found = false;
        puts("Next color, please (empty line to quit):");
    }
    puts("Goodbye!");
    return 0;
}
2015-07-27 01:36
未来大仙
Rank: 6Rank: 6
来 自:黑窟窿
等 级:侠之大者
威 望:4
帖 子:263
专家分:491
注 册:2015-6-20
收藏
得分:0 
回复 3楼 hjx1120
之前版主讲的通俗易懂,但是没讲到底怎么用- -。。  我现在的问题是enum XX{A=1,B,C,D}      如何在prinft输出 A B C D 不是1 2 3 4   我知道case A B C D  会输出。。还有别的方法吗?

好好学习,天天向上!
2015-07-27 09:38
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
C做不到,C#可以。

授人以渔,不授人以鱼。
2015-07-27 11:04
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
枚举,实际上就是一个常量标识符。enum XX { A = 1, B, C, D },与下面代码等价:
程序代码:
const int A = 1;
const int B = 2;
const int C = 3;
const int D = 4;

只是enum把这些常量归类集中在一个叫XX的容器中而已。在C/C++语言中,是没有办法获取变量名字的,比如你无法输出变量A的名字,枚举的情形也一样。在C#中,针对枚举类型,却有这个功能,Java不清楚。

授人以渔,不授人以鱼。
2015-07-27 11:43
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
枚举是无序非连续集合,除了C允许枚举变量可以自增自减,恐怕再找不出别的支持枚举类型的语言可以这样做的了。

授人以渔,不授人以鱼。
2015-07-28 22:20
快速回复:关于枚举
数据加载中...
 
   



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

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