c语言:输出枚举型变量的值,应该用什么格式说明
例如:enumcolor{red,green,blue,white};enumcolortype;inti=1;type=(enumcolor)i;此时如果要用print...
例如: enum color{red,green,blue,white};
enum color type;
int i=1;
type=(enum color)i;
此时如果要用printf输出type的值green,应该怎么写 展开
enum color type;
int i=1;
type=(enum color)i;
此时如果要用printf输出type的值green,应该怎么写 展开
4个回答
展开全部
在C语言中,枚举变量,即以enum关键字定义的变量,是按照整型或者无符号整型来处理的。
1 如果在枚举变量中,不存在负值,如
enum test
{
A,
B,
};
这样的定义,系统会将该枚举变量按照无符号整型处理,即unsigned int 型。输出的时候使用%u格式即可。
enum test t = A;
printf("%u", t);
2 如果在枚举变量中存在负值,那么系统按整型处理,即int型。如定义
enum test
{
A=-199,
B,
};
输出时,需要用%d格式:
enum test t = A;
printf("%d", t);
3 由于枚举变量在书写时,一般不会太大,很少有在没有负数的时候,即按照无符号数处理的时候超出有符号数所能表示的正数范围,即一般不会把最高位置一,所以大多数情况下,用%d输出都是没问题的。
1 如果在枚举变量中,不存在负值,如
enum test
{
A,
B,
};
这样的定义,系统会将该枚举变量按照无符号整型处理,即unsigned int 型。输出的时候使用%u格式即可。
enum test t = A;
printf("%u", t);
2 如果在枚举变量中存在负值,那么系统按整型处理,即int型。如定义
enum test
{
A=-199,
B,
};
输出时,需要用%d格式:
enum test t = A;
printf("%d", t);
3 由于枚举变量在书写时,一般不会太大,很少有在没有负数的时候,即按照无符号数处理的时候超出有符号数所能表示的正数范围,即一般不会把最高位置一,所以大多数情况下,用%d输出都是没问题的。
推荐于2017-10-07
展开全部
enum其实是用字符串来标志一些值(也就是枚举值)
只是从值的大小来考虑的话,
enum color{red,green,blue,white};
类似于:
#define red 0
#define green 1
#define blue 2
#define white 3
只不过这些宏定义都是属于color这个统一的类型的(枚举型)
所以想通过值来逆推出枚举的枚举元素名来。
如果一定要输出的话,只能这么做了:
switch((enum color)i)
{
case 0: printf("red\n");break;
case 1: printf("green\n");break;
case 2: printf("blue\n");break;
case 3: printf("white\n");break;
default: break;
}
只是从值的大小来考虑的话,
enum color{red,green,blue,white};
类似于:
#define red 0
#define green 1
#define blue 2
#define white 3
只不过这些宏定义都是属于color这个统一的类型的(枚举型)
所以想通过值来逆推出枚举的枚举元素名来。
如果一定要输出的话,只能这么做了:
switch((enum color)i)
{
case 0: printf("red\n");break;
case 1: printf("green\n");break;
case 2: printf("blue\n");break;
case 3: printf("white\n");break;
default: break;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
printf("%d", type)或者printf("%d", green), 只会输出1. 想输出green这5个字符是不可能的.
如果在调试器里观察type, 一般会显示green
不存在其他格式控制符能输出green这5个字符.
如果在调试器里观察type, 一般会显示green
不存在其他格式控制符能输出green这5个字符.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不用这么麻烦吧,直接输出
printf("%d",green);就醒了
printf("%d",green);就醒了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询