我已经开始学习C并且已经达到了枚举的程度。 enum基本上是DEFINE
/ const int
的首选替代品,对吗?
这两个声明之间有什么区别?
#include <stdio.h>
// method 1
enum days {
Monday,
Tuesday
};
int main()
{
// method 1
enum days today;
enum days tomorrow;
today = Monday;
tomorrow = Tuesday;
if (today < tomorrow)
printf("yes\n");
// method 2
enum {Monday, Tuesday} days;
days = Tuesday;
printf("%d\n", days);
return 0;
}
答案 0 :(得分:2)
如果要声明的变量只能在相关,的有限范围内获取值,则应优先使#define
/ const int
优先使用枚举互斥的值。所以一周的日子是一个好的示例,但这将是坏示例:
enum AboutMe
{
myAge = 27,
myNumberOfLegs = 2,
myHouseNumber = 54
};
回到你的代码示例;第一个方法声明一个名为enum days
的类型。您可以使用此类型声明任意数量的变量。
第二种方法声明类型为enum { ... }
的单变量。您不能声明该类型的任何其他变量。
答案 1 :(得分:1)
作为一个类型我会写第一个
typedef enum { Monday, Tuesday } days_t;
并将声明作为
days_t day = Tuesday;
我觉得第二种方法没用。
答案 2 :(得分:0)
不同之处在于,在第一种情况下,days是枚举的名称。 因此,您可以通过
访问定义enum days today;
enum days =清除哪个枚举,名为days
的枚举今天=变量名称
在第二种情况下,days是未命名枚举的变量。
enum {Monday, Tuesday} days;
enum {Monday,Tuesday} =未命名的枚举,因此需要使用curl括号{}
进行定义days =变量名称