枚举类型 typedef enum....; enum....; 这两个的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了枚举类型 typedef enum....; enum....; 这两个的区别相关的知识,希望对你有一定的参考价值。

参考技术A 应该是
typedef enum.... a;

enum.... a;

前面一个是将enum.... 定义成一个a类型,声明变量的时候可以用a b;可以理解为类似int i;
后面一个是将enum.... 声明了一个变量a追问

typedef enum InitStructure_enum
a=9,b=11,c,d

s;我刚才运行了一次 typedef 和没有typedef 运行结果没有区别啊

追答

我查了一下,并且测试了一下

根据《C语言大全第四版.pdf》第132页的描述,如下:
......
枚举的定义很像结构,关键字enum表示定义开始。枚举定义的一般形式是:
enum tagenumeration_list vatiable_list;
其中,枚举标记(tag)和变量表(variable_list)都是可选的(但至少要出现一个)。以下代码段定义名为coin的枚举类型:
enum coinpenny,nickel,dime,quarter,half_dollar,dollar;
枚举的标记名用于声明该类型的变量。以下代码声明money为类型coin的变量:
enum coin money;
此后,以下形式的语句完全合法:
money = dime;
if(money==quarter)printf("Money is a quarter.\n");
...........

经过我的测试,发现int型变量可以存枚举的值,枚举变量也可以存int的值,即使范围不在定义的范围内。包括使用枚举变量返回值得函数返回的返回值,也可以赋值到int变量里。
估计做一个返回枚举型变量的函数,只是为了告诉读程序的人,这个程序返回值的范围而已。当你想返回其他值得时候,一样可以通过这个返回函数返回。

_InitStructure x=(1,2,3,4);这样赋值,等号右边是一个逗号表达式,逗号表达式的值等于最右边的值,所以x永远都等于4.其实这里的x只是一个只能存放一个值的变量,不是给它初始化一组变量.具体你可能还是要去找一下我前面说的那本书,仔细看看

本回答被提问者采纳

C语言 enum和typedef enum的区别

在了解enum和typedef enum的区别之前先应该明白typedef的用法和意义。

C语言里typedef的解释是用来声明新的类型名来代替已有的类姓名,例如:

typedef int CHANGE;

指定了用CHANGE代表int类型,CHANGE代表int,那么:

int a,b;和CHANGE a,b;是等价的、一样的。

方便了个人习惯,熟悉的人用CHANGE来定义int。

typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。

而enum是枚举类型,有了typedef的理解容易看出,typedef enum定义了枚举类型,类型变量取值在enum范围内取,在使用中二者无差别。

enum AlertTableSections

kUIAction_Simple_Section = 0,
kUIAction_OKCancel_Section,
kUIAction_Custom_Section,
kUIAlert_Simple_Section,
kUIAlert_OKCancel_Section,
kUIAlert_Custom_Section,
; 
typedef enum 
    UIButtonTypeCustom = 0,           // no button type
    UIButtonTypeRoundedRect,          // rounded rect, flat white button, like in address card
    UIButtonTypeDetailDisclosure,
    UIButtonTypeInfoLight,
    UIButtonTypeInfoDark,
    UIButtonTypeContactAdd,
 UIButtonType;

看上面两个例子更好理解,下面的是UIButton的API,UIButtonType指定的按钮的类型,清楚名了,上面的直接调用enum里的元素就可以了。

区别

定义类型,例如:typedef long time_t;之后在程序中声明变量时,time_t a;就相当于long a;再如有typedef enumyes,no yes_no;之后yes_no a;相当于enumyes,no a;

参考文章1:enum和typedef enum的区别

参考文章2:C语言编程中的typedef enum

以上是关于枚举类型 typedef enum....; enum....; 这两个的区别的主要内容,如果未能解决你的问题,请参考以下文章

enum sizeof typedef分析

typedef enum的用法(枚举)

enum怎么用?

enum枚举的用法以及使用,对下面类帮我解释下 谢谢

C/c++:语言中关键字typedef(类型重命名)enum(整型常量值集合,代替#define)的使用

将头文件中的 typedef 枚举包含在另一个头文件中