c語言中基本數據類型的長度:
32位下:
char :1個字節(不變)
*(指針變量): 4個字節(32位機的尋址空間是4個字節。同理64位編譯器)(變化)
short int : 2個字節(不變)
int: 4個字節(不變)
unsigned int : 4個字節(不變)
float: 4個字節(不變)
double: 8個字節(不變)
long: 4個字節(變化)
unsigned long: 4個字節(變化*,事實上就是尋址控件的地址長度數值)
long long: 8個字節(不變)
64位下:
char 1個字節(不變)
*(指針變量): 8個字節
short int : 2個字節(不變)
int: 4個字節(不變)
unsigned int : 4個字節(不變)
float: 4個字節(不變)
double: 8個字節(不變)
long: 8個字節(變化)
unsigned long: 8個字節(變化*事實上就是尋址控件的地址長度數值)
long long: 8個字節(不變)
除了*與long隨操作系統子長變化而變化外。其它的都固定不變(32位和64相比)
bool 1個字節 char 1個字節 int 4個字節 float 4個字節 doubl 8個字節 long long 8個字節
oc中:
64位系統下(本機不是32位系統的沒法測試):
nsstring 8位
nsinteger 8位(有符號的)
NSUInteger 8位(無符號的,沒有負數)
在oc中非常多變量其實是指針,所以64位系統下非常多都是8位的。
順便提下nsnumber,NSInteger是基礎類型,可是NSNumber是一個類。假設想要在NSMutableArray或者
NSMutableDictionary里存儲一個數值,直接用NSInteger是不行的。要先轉換成nsnumber類。
本文參考了http://blog.csdn.net/totogo2010/article/details/7655908