我不认为我从根本上理解枚举是什么,以及什么时候使用它。
例如:
typedef enum {
kCircle,
kRectangle,
kOblateSpheroid
} ShapeType;
这里真正声明的是什么?
我不认为我从根本上理解枚举是什么,以及什么时候使用它。
例如:
typedef enum {
kCircle,
kRectangle,
kOblateSpheroid
} ShapeType;
这里真正声明的是什么?
当前回答
typedef enum {
kCircle,
kRectangle,
kOblateSpheroid
} ShapeType;
然后你可以这样使用它:-
ShapeType shape;
and
enum {
kCircle,
kRectangle,
kOblateSpheroid
}
ShapeType;
现在你可以这样使用它:-
enum ShapeType shape;
其他回答
枚举声明了一组有序值——typedef只是给它加了一个方便的名字。第一个元素是0等等。
typedef enum {
Monday=1,
...
} WORKDAYS;
WORKDAYS today = Monday;
上面只是shapeType标记的枚举。
typedef允许程序员将一种Objective-C类型定义为另一种。例如,
计数器;将Counter类型定义为等效于int类型。这极大地提高了代码的可读性。
Enum用于为枚举元素赋值,这在struct中无法完成。因此,每次访问完整变量时,我们可以通过在enum中分配给变量的值来完成。默认情况下,它以0赋值开始,但我们可以为它赋任何值,enum中的下一个变量将被赋值为前一个值+1。
typedef enum {
kCircle,
kRectangle,
kOblateSpheroid
} ShapeType;
然后你可以这样使用它:-
ShapeType shape;
and
enum {
kCircle,
kRectangle,
kOblateSpheroid
}
ShapeType;
现在你可以这样使用它:-
enum ShapeType shape;
枚举可以减少许多类型的“错误”,并使代码更易于管理
#define STATE_GOOD 0
#define STATE_BAD 1
#define STATE_OTHER 2
int STATE = STATE_OTHER
这个定义没有约束。这只是一个简单的代换。 它不能限制国家的所有条件。当STATE被赋值为5时,程序将出错,因为没有匹配的状态。但是编译器不会警告STATE = 5
所以这样用比较好
typedef enum SampleState {
SampleStateGood = 0,
SampleStateBad,
SampleStateOther
} SampleState;
SampleState state = SampleStateGood;