将char与enum进行比较

时间:2013-01-26 23:36:54

标签: objective-c enums c99

我有这样定义的枚举:

typedef enum : unsigned char {
    START_DELIMITER = 0xAA,
    END_DELIMITER   = 0xBB,
} Delimiter;

当我将分隔符值与来自const char *的char字节进行比较时,如下所示:

// data is NSData;
const char *bytes = [data bytes];
if (bytes[0] == START_DELIMITER) { }

即使bytes [0]包含0xAA,上述测试也是假的。

如果我将START_DELIMITER定义为const char,则比较为真。即使enum已被定义为unsigned char,为什么针对枚举的测试失败?

1 个答案:

答案 0 :(得分:2)

char已签名,枚举未签名。在进行比较之前,编译器可能会进行符号扩展吗?