标题:用枚举定义变量的问题!
只看楼主
夕野先生
Rank: 1
来 自:北京
等 级:新手上路
帖 子:24
专家分:8
注 册:2008-12-1
结帖率:100%
已结贴  问题点数:10 回复次数:8 
用枚举定义变量的问题!
有5中不同颜色的球若干,问一次拿出三种不同色球的组合有多少种。
下面的程序是已经编译成功的!但里面有几个看不太懂的,用红色注释标注。

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    enum color{red,yellow,blue,white,black};
    color pri;

    int i,j,k,n=0,loop;

    for(i=red;i<=black;i++)   //这里的i没定义成color类型的类型,就可以直接使用color里的成员吗?
    {
        for(j=red;j<=black;j++)
        {
            if(i!=j)
            {
                for(k=red;k<=black;k++)
                    if((k!=i)&&(k!=j))
                    {
                        n=n+1;
                        cout<<setw(3)<<n;

                        for(loop=1;loop<=3;loop++)
                        {
                            switch (loop)
                            {
                            case 1:pri=color(i);break;
                            case 2:pri=color(j);break;
                            case 3:pri=color(k);break;
                            default: break;
                            }
                            switch(pri)
                            {
                            case red:cout<<setw(8)<<"red";break;
                            case yellow:cout<<setw(8)<<"yellow";break;
                            case blue:cout<<setw(8)<<"blue";break;
                            case white:cout<<setw(8)<<"white";break;
                            case black:cout<<setw(8)<<"black";break;
                            default: break;
                            }
                        }
                        cout<<endl;
                    }
            }
        }
    }

    cout<<"total"<<n;
   
    return 0;
}

如果i可以直接使用枚举类型color里的成员,那定义color的变量pri还有何意义?
我试着把pri替换成一个新的整型变量x,编译也能通过,而且结果相同。
麻烦帮我解释一下定义枚举变量的意义,谢谢。

[ 本帖最后由 夕野先生 于 2010-6-10 17:15 编辑 ]
搜索更多相关主题的帖子: 变量 定义 枚举 
2010-06-10 17:14
夕野先生
Rank: 1
来 自:北京
等 级:新手上路
帖 子:24
专家分:8
注 册:2008-12-1
得分:0 
有人在吗?
2010-06-10 17:33
迷失的木桶
Rank: 4
等 级:业余侠客
帖 子:52
专家分:230
注 册:2010-5-29
得分:0 
枚举是一组整数类型的常量定义,就这么简单。
2010-06-10 17:43
夕野先生
Rank: 1
来 自:北京
等 级:新手上路
帖 子:24
专家分:8
注 册:2008-12-1
得分:0 
嗯楼上的我明白你的意思。
我是说既然它是常量,别的变量可以直接引用它,那为什么还要单独定义枚举的变量,比如此题中的:color pri;
直接使不就行了吗?
2010-06-10 17:46
迷失的木桶
Rank: 4
等 级:业余侠客
帖 子:52
专家分:230
注 册:2010-5-29
得分:0 
在这个小程序中不会显出什么区别,更多的时候枚举常量是某一枚举类型的常量,因此在大程序中枚举变量具有类型检查是防止错误的手段。,,,个人观点,请楼主斟酌。
2010-06-10 18:00
夕野先生
Rank: 1
来 自:北京
等 级:新手上路
帖 子:24
专家分:8
注 册:2008-12-1
得分:0 
回复 5楼 迷失的木桶
呵呵谢谢啊~~不过我还是不大懂。。
2010-06-10 18:02
迷失的木桶
Rank: 4
等 级:业余侠客
帖 子:52
专家分:230
注 册:2010-5-29
得分:10 
唉,你注意这句了吗? pri=color(i),也就是说pri枚举变量只接受color枚举的常量,换句话说pri=i是不被接受的。因此枚举变量是有类型检查的,当然象上面那句强制转换是没办法的,即使i的值不在枚举列表中。
2010-06-12 00:38
夕野先生
Rank: 1
来 自:北京
等 级:新手上路
帖 子:24
专家分:8
注 册:2008-12-1
得分:0 
呵呵谢谢啊哥们!我就先这么生记吧!以后再慢慢理解~
2010-06-12 11:58
刚开始吧
该用户已被删除
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-06-12 12:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-309877-1-1.html




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

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