关于c语言枚举用法

enum string
{
x1,
x2,
x3=10,
x4,
x5,
}x;
问x= 0x801005,0x8010f4 ;

以上是一个面试题目。但是我看不懂,不晓得问什么,也不知道该怎么答。
能否详细讲解一下,x=0x801005,怎么来的,还有就是后面那个0x8010f4怎么来的?这个题目到底想问什么,怎么回答?


慕的地10843
浏览 576回答 3
3回答

呼唤远方

 一、对枚举型的变量赋值。  实例将枚举类型的赋值与基本数据类型的赋值进行了对比:  方法1:先声明变量,再对变量赋值1234567891011121314151617#include<stdio.h>/*&nbsp;定义枚举类型&nbsp;*/enum&nbsp;DAY&nbsp;{&nbsp;MON=1,&nbsp;TUE,&nbsp;WED,&nbsp;THU,&nbsp;FRI,&nbsp;SAT,&nbsp;SUN&nbsp;};void&nbsp;main(){&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;使用基本数据类型声明变量,然后对变量赋值&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;x,&nbsp;y,&nbsp;z;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;=&nbsp;10;&nbsp;&nbsp;&nbsp;&nbsp;y&nbsp;=&nbsp;20;&nbsp;&nbsp;&nbsp;&nbsp;z&nbsp;=&nbsp;30;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;使用枚举类型声明变量,再对枚举型变量赋值&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;enum&nbsp;DAY&nbsp;yesterday,&nbsp;today,&nbsp;tomorrow;&nbsp;&nbsp;&nbsp;&nbsp;yesterday&nbsp;=&nbsp;MON;&nbsp;&nbsp;&nbsp;&nbsp;today&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;TUE;&nbsp;&nbsp;&nbsp;&nbsp;tomorrow&nbsp;&nbsp;=&nbsp;WED;&nbsp;&nbsp;&nbsp;&nbsp;printf("%d&nbsp;%d&nbsp;%d&nbsp;\n",&nbsp;yesterday,&nbsp;today,&nbsp;tomorrow);}  方法2:声明变量的同时赋初值12345678910111213#include&nbsp;<stdio.h>/*&nbsp;定义枚举类型&nbsp;*/enum&nbsp;DAY&nbsp;{&nbsp;MON=1,&nbsp;TUE,&nbsp;WED,&nbsp;THU,&nbsp;FRI,&nbsp;SAT,&nbsp;SUN&nbsp;};void&nbsp;main(){&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;使用基本数据类型声明变量同时对变量赋初值&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;x=10,&nbsp;y=20,&nbsp;z=30;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;使用枚举类型声明变量同时对枚举型变量赋初值&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;enum&nbsp;DAY&nbsp;yesterday&nbsp;=&nbsp;MON,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;today&nbsp;=&nbsp;TUE,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tomorrow&nbsp;=&nbsp;WED;&nbsp;&nbsp;&nbsp;&nbsp;printf("%d&nbsp;%d&nbsp;%d&nbsp;\n",&nbsp;yesterday,&nbsp;today,&nbsp;tomorrow);}  方法3:定义类型的同时声明变量,然后对变量赋值。12345678910111213141516#include&nbsp;<stdio.h>/*&nbsp;定义枚举类型,同时声明该类型的三个变量,它们都为全局变量&nbsp;*/enum&nbsp;DAY&nbsp;{&nbsp;MON=1,&nbsp;TUE,&nbsp;WED,&nbsp;THU,&nbsp;FRI,&nbsp;SAT,&nbsp;SUN&nbsp;}&nbsp;yesterday,&nbsp;today,&nbsp;tomorrow;/*&nbsp;定义三个具有基本数据类型的变量,它们都为全局变量&nbsp;*/int&nbsp;x,&nbsp;y,&nbsp;z;void&nbsp;main(){&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;对基本数据类型的变量赋值&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;=&nbsp;10;&nbsp;&nbsp;y&nbsp;=&nbsp;20;&nbsp;&nbsp;z&nbsp;=&nbsp;30;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;对枚举型的变量赋值&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;yesterday&nbsp;=&nbsp;MON;&nbsp;&nbsp;&nbsp;&nbsp;today&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;TUE;&nbsp;&nbsp;&nbsp;&nbsp;tomorrow&nbsp;&nbsp;=&nbsp;WED;&nbsp;&nbsp;&nbsp;&nbsp;printf("%d&nbsp;%d&nbsp;%d&nbsp;\n",&nbsp;x,&nbsp;y,&nbsp;z);&nbsp;//输出:10&nbsp;20&nbsp;30&nbsp;&nbsp;&nbsp;&nbsp;printf("%d&nbsp;%d&nbsp;%d&nbsp;\n",&nbsp;yesterday,&nbsp;today,&nbsp;tomorrow);&nbsp;//输出:1&nbsp;2&nbsp;3}  方法4:类型定义,变量声明,赋初值同时进行。1234567891011121314151617181920#include&nbsp;<stdio.h>/*&nbsp;定义枚举类型,同时声明该类型的三个变量,并赋初值。它们都为全局变量&nbsp;*/enum&nbsp;DAY{&nbsp;&nbsp;&nbsp;&nbsp;MON=1,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TUE,&nbsp;&nbsp;&nbsp;&nbsp;WED,&nbsp;&nbsp;&nbsp;&nbsp;THU,&nbsp;&nbsp;&nbsp;&nbsp;FRI,&nbsp;&nbsp;&nbsp;&nbsp;SAT,&nbsp;&nbsp;&nbsp;&nbsp;SUN&nbsp;}yesterday&nbsp;=&nbsp;MON,&nbsp;today&nbsp;=&nbsp;TUE,&nbsp;tomorrow&nbsp;=&nbsp;WED;/*&nbsp;定义三个具有基本数据类型的变量,并赋初值。它们都为全局变量&nbsp;*/int&nbsp;x&nbsp;=&nbsp;10,&nbsp;y&nbsp;=&nbsp;20,&nbsp;z&nbsp;=&nbsp;30;void&nbsp;main(){&nbsp;&nbsp;&nbsp;&nbsp;printf("%d&nbsp;%d&nbsp;%d&nbsp;\n",&nbsp;x,&nbsp;y,&nbsp;z);&nbsp;//输出:10&nbsp;20&nbsp;30&nbsp;&nbsp;&nbsp;&nbsp;printf("%d&nbsp;%d&nbsp;%d&nbsp;\n",&nbsp;yesterday,&nbsp;today,&nbsp;tomorrow);&nbsp;//输出:1&nbsp;2&nbsp;3}  2、对枚举型的变量赋整数值时,需要进行类型转换。1234567891011#include&nbsp;<stdio.h>enum&nbsp;DAY&nbsp;{&nbsp;MON=1,&nbsp;TUE,&nbsp;WED,&nbsp;THU,&nbsp;FRI,&nbsp;SAT,&nbsp;SUN&nbsp;};void&nbsp;main(){&nbsp;&nbsp;&nbsp;&nbsp;enum&nbsp;DAY&nbsp;yesterday,&nbsp;today,&nbsp;tomorrow;&nbsp;&nbsp;&nbsp;&nbsp;yesterday&nbsp;=&nbsp;TUE;&nbsp;&nbsp;&nbsp;&nbsp;today&nbsp;=&nbsp;(enum&nbsp;DAY)&nbsp;(yesterday&nbsp;+&nbsp;1);&nbsp;//类型转换&nbsp;&nbsp;&nbsp;&nbsp;tomorrow&nbsp;=&nbsp;(enum&nbsp;DAY)&nbsp;30;&nbsp;//类型转换&nbsp;&nbsp;&nbsp;&nbsp;//tomorrow&nbsp;=&nbsp;3;&nbsp;//错误&nbsp;&nbsp;&nbsp;&nbsp;printf("%d&nbsp;%d&nbsp;%d&nbsp;\n",&nbsp;yesterday,&nbsp;today,&nbsp;tomorrow);&nbsp;//输出:2&nbsp;3&nbsp;30}  3、使用枚举型变量123456789101112131415161718192021222324252627282930#include<stdio.h>enum{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BELL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'\a',&nbsp;&nbsp;&nbsp;&nbsp;BACKSPACE&nbsp;=&nbsp;'\b',&nbsp;&nbsp;&nbsp;&nbsp;HTAB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'\t',&nbsp;&nbsp;&nbsp;&nbsp;RETURN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'\r',&nbsp;&nbsp;&nbsp;&nbsp;NEWLINE&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'\n',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VTAB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'\v',&nbsp;&nbsp;&nbsp;&nbsp;SPACE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'&nbsp;'};enum&nbsp;BOOLEAN&nbsp;{&nbsp;FALSE&nbsp;=&nbsp;0,&nbsp;TRUE&nbsp;}&nbsp;match_flag;void&nbsp;main(){&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;index&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;count_of_letter&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;count_of_space&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;str[]&nbsp;=&nbsp;"I'm&nbsp;Ely&nbsp;efod";&nbsp;&nbsp;&nbsp;&nbsp;match_flag&nbsp;=&nbsp;FALSE;&nbsp;&nbsp;&nbsp;&nbsp;for(;&nbsp;str[index]&nbsp;!=&nbsp;'\0';&nbsp;index++)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;SPACE&nbsp;!=&nbsp;str[index]&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count_of_letter++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;match_flag&nbsp;=&nbsp;(enum&nbsp;BOOLEAN)&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count_of_space++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}printf("%s&nbsp;%d&nbsp;times&nbsp;%c",&nbsp;match_flag&nbsp;?&nbsp;"match"&nbsp;:&nbsp;"not&nbsp;match",&nbsp;count_of_space,&nbsp;NEWLINE);&nbsp;&nbsp;&nbsp;&nbsp;printf("count&nbsp;of&nbsp;letters:&nbsp;%d&nbsp;%c%c",&nbsp;count_of_letter,&nbsp;NEWLINE,&nbsp;RETURN);}&nbsp;

慕尼黑8549860

上面的问题没说清楚吧,x = 0x801005根本就会编译不过的,因为左值是枚举,右值是int
打开App,查看更多内容
随时随地看视频慕课网APP