我不认为我从根本上理解枚举是什么,以及什么时候使用它。

例如:

typedef enum {
    kCircle,
    kRectangle,
    kOblateSpheroid
} ShapeType;

这里真正声明的是什么?


当前回答

typedef enum {
kCircle,
kRectangle,
kOblateSpheroid
} ShapeType;

然后你可以这样使用它:-

 ShapeType shape;

and

 enum {
    kCircle,
    kRectangle,
    kOblateSpheroid
} 
ShapeType;

现在你可以这样使用它:-

enum ShapeType shape;

其他回答

类型定义是C和c++中的关键字。它用于为基本数据类型(char, int, float, double, struct & enum)创建新名称。

typedef enum {
    kCircle,
    kRectangle,
    kOblateSpheroid
} ShapeType;

这里它创建枚举数据类型ShapeType &我们可以为枚举类型ShapeType写新的名称,如下所示

ShapeType shape1; 
ShapeType shape2; 
ShapeType shape3;

枚举声明了一组有序值——typedef只是给它加了一个方便的名字。第一个元素是0等等。

typedef enum {
Monday=1,
...
} WORKDAYS;

WORKDAYS today = Monday;

上面只是shapeType标记的枚举。

typedef允许程序员将一种Objective-C类型定义为另一种。例如,

计数器;将Counter类型定义为等效于int类型。这极大地提高了代码的可读性。

用户定义的类型,其值可能为kCircle、kRectangle或koblabespheroid。但是,枚举内部的值(kCircle等)在枚举外部是可见的。记住这一点很重要(int i = kCircle;例如,有效的)。

Enum用于为枚举元素赋值,这在struct中无法完成。因此,每次访问完整变量时,我们可以通过在enum中分配给变量的值来完成。默认情况下,它以0赋值开始,但我们可以为它赋任何值,enum中的下一个变量将被赋值为前一个值+1。