intとlongとNSInteger


iPhoneアプリにおいて、長らく、intとlongとNSIntegerは4バイトで同じサイズだった。iPhone5Sが登場し、64ビットCPUになったので、それぞれの型がどのように違うのか確認してみた。64ビット整数型を使う機会はあまり多くないかもしれないが、得点がインフレするゲームでは(約21億点 もしくは 43億点)32ビット環境と64ビット環境で動作が異なるので注意が必要だ。

int a = 1;
long b = 1;
NSInteger c = a;
   
NSLog(@"%lu %lu %lu", sizeof(a), sizeof(b), sizeof(c));

//32ビット環境 iPhone Retina(3.5inch)
2013-11-16 21:18:39.355 NSInteger[4024:70b] 4 4 4

//64ビット環境 iPhone Retina(4-inch 64bit)
2013-11-16 21:14:25.935 NSInteger[3962:70b] 4 8 8

Comments

comments

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です