
一、对枚举型的变量赋值。
实例将枚举类型的赋值与基本数据类型的赋值进行了对比:
方法1:先声明变量,再对变量赋值
#include<stdioh>/ 定义枚举类型 /
enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN };
void main()
{
/ 使用基本数据类型声明变量,然后对变量赋值 /
int x, y, z;
x = 10;
y = 20;
z = 30;
/ 使用枚举类型声明变量,再对枚举型变量赋值 /
enum DAY yesterday, today, tomorrow;
yesterday = MON;
today = TUE;
tomorrow = WED;
printf("%d %d %d \n", yesterday, today, tomorrow);
}
方法2:声明变量的同时赋初值
#include <stdioh>/ 定义枚举类型 /
enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN };
void main()
{
/ 使用基本数据类型声明变量同时对变量赋初值 /
int x=10, y=20, z=30;
/ 使用枚举类型声明变量同时对枚举型变量赋初值 /
enum DAY yesterday = MON,
today = TUE,
tomorrow = WED;
printf("%d %d %d \n", yesterday, today, tomorrow);
}
方法3:定义类型的同时声明变量,然后对变量赋值。
#include <stdioh>/ 定义枚举类型,同时声明该类型的三个变量,它们都为全局变量 /
enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN } yesterday, today, tomorrow;
/ 定义三个具有基本数据类型的变量,它们都为全局变量 /
int x, y, z;
void main()
{
/ 对基本数据类型的变量赋值 /
x = 10; y = 20; z = 30;
/ 对枚举型的变量赋值 /
yesterday = MON;
today = TUE;
tomorrow = WED;
printf("%d %d %d \n", x, y, z); //输出:10 20 30
printf("%d %d %d \n", yesterday, today, tomorrow); //输出:1 2 3
}
方法4:类型定义,变量声明,赋初值同时进行。
#include <stdioh>/ 定义枚举类型,同时声明该类型的三个变量,并赋初值。它们都为全局变量 /
enum DAY
{
MON=1,
TUE,
WED,
THU,
FRI,
SAT,
SUN
}
yesterday = MON, today = TUE, tomorrow = WED;
/ 定义三个具有基本数据类型的变量,并赋初值。它们都为全局变量 /
int x = 10, y = 20, z = 30;
void main()
{
printf("%d %d %d \n", x, y, z); //输出:10 20 30
printf("%d %d %d \n", yesterday, today, tomorrow); //输出:1 2 3
}
2、对枚举型的变量赋整数值时,需要进行类型转换。
#include <stdioh>enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN };
void main()
{
enum DAY yesterday, today, tomorrow;
yesterday = TUE;
today = (enum DAY) (yesterday + 1); //类型转换
tomorrow = (enum DAY) 30; //类型转换
//tomorrow = 3; //错误
printf("%d %d %d \n", yesterday, today, tomorrow); //输出:2 3 30
}
3、使用枚举型变量
#include<stdioh>enum
{
BELL = '\a',
BACKSPACE = '\b',
HTAB = '\t',
RETURN = '\r',
NEWLINE = '\n',
VTAB = '\v',
SPACE = ' '
};
enum BOOLEAN { FALSE = 0, TRUE } match_flag;
void main()
{
int index = 0;
int count_of_letter = 0;
int count_of_space = 0;
char str[] = "I'm Ely efod";
match_flag = FALSE;
for(; str[index] != '\0'; index++)
if( SPACE != str[index] )
count_of_letter++;
else
{
match_flag = (enum BOOLEAN) 1;
count_of_space++;
}
printf("%s %d times %c", match_flag "match" : "not match", count_of_space, NEWLINE);
printf("count of letters: %d %c%c", count_of_letter, NEWLINE, RETURN);
}
#include<stdioh>
void main(){
enum aaa{nima,dlaji,sbud,wod} a;
for(a=nima;a<=wod;a=aaa(a+1))
printf("%d",a);
}
不能用a++的,++是针对整数,你的a是枚举,a=aaa(a+1),这样就可以,加1后强转成枚举
枚举类型定义:是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内
针对值只能是几种的可用这个类型,你说的字符串是没有限制的。
在某些地方枚举会比较好用,比如表示星期
1、定义季节枚举类型Season,然后定义变量se。
2、定义季节枚举类型Season,给第一个枚举类元素设置值为1。
3、定义季节枚举类型Season,给第一个枚举类元素设置值为1,第二个枚举类元素为2。
4、定义季节枚举类型Season,给第一个枚举类元素设置值为1,第二个枚举元素设置为2,第三个设置为3,第四个设置为4。
5、定义季节枚举类型Season,字符串变量se,获取第四个元素。
6、定义季节枚举类型Season,字符串变量se,获取第一个元素,并打印。
很显然 实践检验真理,你代码都写得这么明白了 说明网上说的枚举值只能给枚举变量的说法是错的 而且这里你也没有进行类型强制转换也没问题
网上的说法可能意思表达的不清楚,也许他的意思是枚举类型的变量,你既然把他定义成枚举变量那说明这个变量的值你想把他控制在这个枚举范围内,你如果赋值一个其他int值那有啥意义呢
也有一种可能就是网上是想表明如果不进行强制类型转换的话会报告警但编译通过
(3) 第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。(4) 可以人为设定枚举成员的值,从而自定义某个范围内的整数。(5) 枚举型是预处理指令#define的替代。(6) 类型定义以分号;结束。定义枚举类型enum YOURENUMTYPE{ID1,//如果不额外指定则第一个标识等于整数0,后续依次加1ID2,ID3=7,IDn//最后一个标识符后面没有逗号};//注意一定要加上这个分号定义枚举变量enum YOURENUMTYPE varname;给枚举变量赋值 varname = IDx;举个完整的例子enum FRUIT{APPLE,PEAR,ORANGE,PEACH,GRAPE,BANANA};enmu FRUIT myfruit = PEACH;1举个例子: 学生 类分大学生 高中 初中小学生你就可以这么做enum student{colleage,high,middle,junior}//小明是个大学生student xiaoming=colleage;//判断小刚是不是高中生
以上就是关于c语言枚举用法全部的内容,包括:c语言枚举用法、C语言枚举类型、C 如何打印枚举类型等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)