一道C语言的简单题目

定义一个描述红、绿、蓝三色(red,green,blue)的枚举类型,类型名为color,再定义该类型的3个变量R、G和B让其值分别为red、green和blue。再次定义3个指针变量,分别指向变量R、G和B,最后用指针变量输出这3个变量的值。

(这是原题)
#include<stdio.h>
main()
{
enum color {red,green,blue};
enum color r,g,b;
enum color *m,*n,*p;
r=red;
g=green;
b=blue;
m=&r;
n=&g;
p=&b;
printf("%d,%d,%d",*m,*n,*p);
getch();
}
(这是我的代码)
但是每次输出结果都是 0,1,2 这是为什么呢

0,1,2就对了啊。枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量。你没指定就是从0开始。追问

题目不是说要输出者3个变量的值吗?? 总觉得应该输出 red ,green ,blue 才对啊- -

追答

三个变量的值就是 0,1,2,你好好把枚举类型的知识再看一遍吧。枚举可以理解为为整型数值起了个方便理解的别名。而且,你自己都用的是 %d 来 printf,又怎么可能输出字符串呢?除非你自己又做个字典来把这些整型值转换为字符串来输出。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-06
颜色 名称 应该是用字符串 吧?
在定义枚举前,先定义 red 为 字符串变量,并赋值“red”,
printf 里注意格式,,
再试试
第2个回答  2014-03-06
C语言默认将枚举类型数字化,第一个枚举值为0,以此类推,所以用%d输出肯定是0,1,2追问

题目不是说要输出者3个变量的值吗?? 总觉得应该输出 red ,green ,blue 才对啊- -