Objective c c、 不带标记或标识符的obj c枚举
我正在学习cocos2d[iPhone上objective C的open gl wrapper],现在在玩sprites时发现了一个例子Objective c c、 不带标记或标识符的obj c枚举,objective-c,c,ios,enums,Objective C,C,Ios,Enums,我正在学习cocos2d[iPhone上objective C的open gl wrapper],现在在玩sprites时发现了一个例子 enum { easySprite = 0x0000000a, mediumSprite = 0x0000000b, hardSprite = 0x0000000c, backButton = 0x0000000d, magneticSprite = 0x0000000e, magneticSprite2 = 0x0000000f };
enum {
easySprite = 0x0000000a,
mediumSprite = 0x0000000b,
hardSprite = 0x0000000c,
backButton = 0x0000000d,
magneticSprite = 0x0000000e,
magneticSprite2 = 0x0000000f
};
因此,枚举中定义的变量用于创建的精灵对象的标记名
但我不明白
typedef enum {
JPG,
PNG,
GIF,
PVR
} kImageType;
谢谢 枚举是自动分配的值,从0开始递增,但您可以分配自己的值 如果未指定任何值,它们将从0开始,如中所示:
typedef enum {
JPG,
PNG,
GIF,
PVR
} kImageType;
但你可以给他们赋值:
typedef enum {
JPG = 0,
PNG = 1,
GIF = 2,
PVR = 3
} kImageType;
甚至
typedef enum {
JPG = 100,
PNG = 0x01,
GIF = 100,
PVR = 0xff
} kImageType;
任何您想要的,重复值也可以
我不知道为什么会给它们指定这些特定的值,但它们可能有一些与使用相关的含义。通常,在创建枚举时,您希望将其用作类型(变量、方法参数等) 在本例中,这只是一种声明整型常量的方法。因为他们不想使用枚举作为类型,所以不需要名称 编辑: 当整数是二进制掩码时,通常使用十六进制数。您不会看到任何像+、-、*、/这样的运算符与这样的数字一起使用,您会看到按位运算符(!、&、|、^)
十六进制数中的每一位代表4位。整数是一个32位整数,在本例中,用十六进制表示,表示只使用最后四位,其他位可以用于其他内容。从十进制数来看,这一点并不明显。好吧,你似乎在做一个糟糕的例子。:) 至少就枚举而言。任何人都可以定义枚举项的实际值,但使用十六进制数没有好处,特别是用a到f(10到15)开始十六进制数没有意义。该示例也适用于此枚举:
enum {
easySprite = 10,
mediumSprite,
hardSprite,
backButton,
magneticSprite,
magneticSprite2
};
除非枚举从值10开始有什么意义,否则它可能在不指定任何具体值的情况下工作。这不是一个针对Objective-C的问题,因此我将其重新标记为C。它与obj C和cocos2d有关,因为这是在OBJC中创建的精灵,而不是在C文件中创建的精灵,另外,我想要一个obj C人的观点,谢谢。你在这里找到这个例子了吗?当然还有更好的Cocos2D示例可用。您好,这里是这个示例的链接,该类在这个blogAdded十六进制数字解释中的某个地方相关。GIF,您是否与其他人一样缩进?
enum {
easySprite = 10,
mediumSprite,
hardSprite,
backButton,
magneticSprite,
magneticSprite2
};