c语言is int number,C语言中NSInteger,NSNumber以及Int的区别
NSInteger和NSNumber
首先:NSInteger,NSNumber并沒(méi)有什么關(guān)系,更不要想當(dāng)然的以為二者還有什么繼承關(guān)系,甚至還有人問(wèn)NSInteger是不是NSNumber的子類(lèi)?答案當(dāng)然是NO!!!NSInteger只是一個(gè)基本的數(shù)據(jù)類(lèi)型,而NSNumber是OC的對(duì)象,并且NSNumber繼承自NSValue,NSValue又繼承自NSObject.
既然 NSInteger是基本類(lèi)型,那么,使用起來(lái)就非常簡(jiǎn)單。 聲明一個(gè)變量, NSInteger myInt; 直接賦值就可以了。 比如: myInt=8;
NSNumber 所擁有的類(lèi)方法,如下:
+ (NSNumber*)numberWithChar: (char)value;
+ (NSNumber*)numberWithInt: (int)value;
+ (NSNumber*)numberWithFloat: (float)value;
+ (NSNumber*)numberWithBool: (BOOL) value;
NSNumber *myNumber,*floatnumber,*intNumber,*doublenumber,*charNumber;
myNumber = [NSNumber numberWithLong:0xabcdef];
floatnumber = [NSNumber numberWithFloat:12.34];
intNumber = [NSNumber numberWithInt:1000];
doublenumber = [NSNumber numberWithDouble:12345e+15];
charNumber = [NSNumber numberWithChar:'X'];
將基本類(lèi)型數(shù)據(jù)封裝到NSNumber中后,就可以通過(guò)下面的實(shí)例方法重新獲取它:
- (char)charValue;
- (int)intValue;
- (float)floatValue;
- (BOOL)boolValue;
- (NSString*)stringValue;
myInt = [intNumber intValue]; //獲取對(duì)象的整型值
//[floatnumber floatValue];
//[doublenumber doubleValue];
//[charNumber charValue];
關(guān)于NSInteger 和Int:
查到c語(yǔ)言中,int和long的字節(jié)數(shù)是和操作系統(tǒng)指針?biāo)嘉粩?shù)相等。
但c語(yǔ)言中說(shuō),long的長(zhǎng)度永遠(yuǎn)大于或等于int
objective-c里,蘋(píng)果的官方文檔中總是推薦用NSInteger
它和int有什么區(qū)別呢,stackoverflow這幫大神給了答案。
NSInteger是一個(gè)封裝,它會(huì)識(shí)別當(dāng)前操作系統(tǒng)的位數(shù),自動(dòng)返回最大的類(lèi)型。當(dāng)你不知道你的操作系統(tǒng)是什么類(lèi)型的時(shí)候,你通常會(huì)想要使用NSInteger,所以或許你想要你的int類(lèi)型范圍盡可能的大,用NSInteger,32位系統(tǒng)NSInteger是一個(gè)int,即32位,但當(dāng)時(shí)64位系統(tǒng)時(shí),NSInteger便是64位的。——所以就是一般推薦用NSInteger的
定義的代碼類(lèi)似于下:
#if __LP64__ || 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
You usually want to use NSInteger when you don't know what kind of processor architecture your code might run on, so you may for some reason want the largest possible int type, which on 32 bit systems is just an int, while on a 64-bit system it's a long.
總結(jié):NSInteger與int的區(qū)別是NSInteger會(huì)根據(jù)系統(tǒng)的位數(shù)(32or64)自動(dòng)選擇int的最大數(shù)值(int or long)。
總結(jié)
以上是生活随笔為你收集整理的c语言is int number,C语言中NSInteger,NSNumber以及Int的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 交通流理论学习(Introduciton
- 下一篇: 转:电子书的集合