我正在阅读 iPhone 示例项目的代码(Xcode IDE,Apple LLVM 编译器 4.2)。在该 iPhone 示例项目的外部库(用 C 编写)的头文件中,在枚举类型中声明了一些事件:
typedef enum _Application_Events
{
EVENT_EXIT = 0x80000000,
EVENT_TOUCH,
EVENT_DRAG,
EVENT_RELEASE_TOUCH,
EVENT_ROTATE_0,
EVENT_ROTATE_90,
EVENT_ROTATE_180,
EVENT_ROTATE_270
} Application_Events;
我不明白为这些事件分配了什么样的值。0x80000000
应该是一个大的正整数 ( ) 2147483648
,还是负零,还是一个负整数 ( -2147483648
)?
我在 Xcode 调试器中进行了检查,编译器是 Apple LLVM 编译器 4.2、EVENT_EXIT
equals(int) -2147483648
和EVENT_RELEASE_TOUCH
equals(int) -2147483645
等等。
显然,它们以二进制补码表示形式处理。可以在此处找到相关帖子。
但我现在不确定的是这些:
0x80000000
(1) 在其他情况下总是存在int
或其他东西的基础数据类型?这取决于编译器还是平台?
(2) 如果我为这样的有符号整数分配了一个十六进制值,它是否总是被解释为二进制补码表示?这取决于编译器还是平台?可以在此处找到相关帖子。另一个参考可以在这里找到。
请分享一些想法。谢谢大家 :D