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
などです。
どうやら、それらは2 の補数表現で扱われます。関連する投稿はここにあります。
しかし、私が今確信していないのは、次のとおりです。
0x80000000
(1)常に存在するための基礎となるデータ型、int
または他の状況で何か他のもの? これはコンパイラまたはプラットフォームに依存していますか?
(2) このように符号付き整数に 16 進数値を割り当てた場合、常に 2 の補数表現として解釈されますか? これはコンパイラまたはプラットフォームに依存していますか? 関連する投稿はこちらにあります。別のリファレンスはここにあります。
いくつかのアイデアを共有してください。ありがとうございました:D