C语言 我是初学者
答案:2 悬赏:30 手机版
解决时间 2021-11-10 20:09
- 提问者网友:放下
- 2021-11-10 15:11
C语言 我是初学者
最佳答案
- 五星知识达人网友:長槍戰八方
- 2021-11-10 16:09
C语言规定,在定义枚举型时,可以给枚举常量赋初值,方法是在枚举常量的后面跟上“=整型常量”。例如,表示三原色的枚举型可以定义如下:
enum colorl
{red=2,yellow=4,blue=7};
则枚举常量,red的值为2,yellow的值为4,blue的值为7。
1、给变量或数组元素赋值,格式为:枚举型变量或数组元素=同一种枚举型常量名
C语言规定,虽然枚举常量值是0或自然数,但是不能直接将整型常量赋予枚举型变量或数组元素。但是可以通过类型强制转换来赋值,请看下面的程序段。
enum color
{red,yellow,blue}c_l;
cl=yellow;
c_l=1;
c_l=(enum color)l;
重要说明:有少数的C编译系统允许将整型常量直接赋予枚举型变量,例如Turho C。所以使用Turbo C编译系统编译上述程序,其中的语句“c_1=l;”并不会出错。
2、枚举类型倒倒多和宏定义比较、宏和枚举的主要区别是作用的时间和存储形式不同。宏定义是在编译预处理阶段作用的,也就是在编译预处理时,就会进行宏替换,将程序中的所有宏名替换为所定义的常量名,而枚举则是在程序运行之后才起作用的。宏定义不分配内存空间,而枚举常量存储在数据的静态存储区中(这一点一定要注意)。宏只占用代码段的空间,而枚举除了占用代码段空间外,还耗费CPU资源。
enum colorl
{red=2,yellow=4,blue=7};
则枚举常量,red的值为2,yellow的值为4,blue的值为7。
1、给变量或数组元素赋值,格式为:枚举型变量或数组元素=同一种枚举型常量名
C语言规定,虽然枚举常量值是0或自然数,但是不能直接将整型常量赋予枚举型变量或数组元素。但是可以通过类型强制转换来赋值,请看下面的程序段。
enum color
{red,yellow,blue}c_l;
cl=yellow;
c_l=1;
c_l=(enum color)l;
重要说明:有少数的C编译系统允许将整型常量直接赋予枚举型变量,例如Turho C。所以使用Turbo C编译系统编译上述程序,其中的语句“c_1=l;”并不会出错。
2、枚举类型倒倒多和宏定义比较、宏和枚举的主要区别是作用的时间和存储形式不同。宏定义是在编译预处理阶段作用的,也就是在编译预处理时,就会进行宏替换,将程序中的所有宏名替换为所定义的常量名,而枚举则是在程序运行之后才起作用的。宏定义不分配内存空间,而枚举常量存储在数据的静态存储区中(这一点一定要注意)。宏只占用代码段的空间,而枚举除了占用代码段空间外,还耗费CPU资源。
全部回答
- 1楼网友:鱼芗
- 2021-11-10 16:21
可以,但只能是在变量声明的赋值格式中存在,程序中不可。如果你不赋值,编译系统会自动按照0,1,2,...顺序分配整数,你赋值后,之后的变量仍然会顺序递增,比如:
enum myselect
{ A, //系统会自动分配0,以后在程序中用A系统就自动替换成0
B, //自动分配1
C=4, //如果不赋值会自动分配2,现在强制分配了4
D, //自动分配5,前一个枚举数据值加1
E=7, //强制7
F=10, //强制10
G //自动11
};
enum myselect
{ A, //系统会自动分配0,以后在程序中用A系统就自动替换成0
B, //自动分配1
C=4, //如果不赋值会自动分配2,现在强制分配了4
D, //自动分配5,前一个枚举数据值加1
E=7, //强制7
F=10, //强制10
G //自动11
};
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯