目标c - 比较字符和枚举



我有一个这样定义的枚举:

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

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

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

即使字节[0]包含0xAA,上述测试也是错误的。

如果我将START_DELIMITER定义为常量字符,则比较是正确的。 为什么即使枚举已定义为无符号字符,针对枚举的测试也会失败?

字符是有符号的,枚举是无符号的。 也许编译器在进行比较之前会签名扩展?

最新更新