32位編譯器
char :1個(gè)字節(jié)
char*(即指針變量): 4個(gè)字節(jié)(32位的尋址空間是2^32, 即32個(gè)bit冀泻,也就是4個(gè)字節(jié)凛驮。同理64位編譯器)
short int : 2個(gè)字節(jié)
int:? 4個(gè)字節(jié) ? ? ? ? ? ? ? ? ? ? ? ?范圍 ?-2147483648~2147483647
unsigned int : 4個(gè)字節(jié)
long:? 4個(gè)字節(jié) ? ? ? ? ? ? ? ? ? ? ? ? 范圍 和int一樣
long long:? 8個(gè)字節(jié) ? ? ? ? ? ? ? ? 范圍? -9223372036854775808~9223372036854775807
unsigned long long:? 8個(gè)字節(jié)? ? 最大值:1844674407370955161
float:? 4個(gè)字節(jié)
double:? 8個(gè)字節(jié)
64位編譯器
char :1個(gè)字節(jié)
char*(即指針變量): 8個(gè)字節(jié)
short int : 2個(gè)字節(jié)
int:? 4個(gè)字節(jié) ? ? ? ? ? ? ? ? ? ? ?范圍? -2147483648~2147483647
unsigned int : 4個(gè)字節(jié)
long:? 8個(gè)字節(jié) ? ? ? ? ? ? ? ? ? ? 范圍? -9223372036854775808~9223372036854775807
long long:? 8個(gè)字節(jié) ? ? ? ? ? ?范圍? -9223372036854775808~9223372036854775807
unsigned long long:? 8個(gè)字節(jié)? ? 最大值:1844674407370955161
float:? 4個(gè)字節(jié)
double:? 8個(gè)字節(jié)
注意:64bit和32bit下 ?long 和char*所占字節(jié)是不同的
4個(gè)字節(jié)的最大范圍是4294967295裆站, int只是占四個(gè)字節(jié) 不能用int來(lái)存儲(chǔ)四個(gè)字節(jié)的數(shù),要不然會(huì)越界
int與NSInteger區(qū)別
在蘋果的api實(shí)現(xiàn)中黔夭,NSInteger是一個(gè)封裝宏胯,它會(huì)識(shí)別當(dāng)前操作系統(tǒng)的位數(shù),自動(dòng)返回最大的類型本姥。
定義的代碼類似于下:
ifLP64|| TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
typedef unsigned long NSUInteger;
else
typedef int NSInteger;
typedef unsigned int NSUInteger;
endif
NSInteger與int的區(qū)別是NSInteger會(huì)根據(jù)系統(tǒng)的位數(shù)(32or64)自動(dòng)選擇int的最大數(shù)值(int or long)