日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言is int number,C语言中NSInteger,NSNumber以及Int的区别

發布時間:2023/12/20 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言is int number,C语言中NSInteger,NSNumber以及Int的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

NSInteger和NSNumber

首先:NSInteger,NSNumber并沒有什么關系,更不要想當然的以為二者還有什么繼承關系,甚至還有人問NSInteger是不是NSNumber的子類?答案當然是NO!!!NSInteger只是一個基本的數據類型,而NSNumber是OC的對象,并且NSNumber繼承自NSValue,NSValue又繼承自NSObject.

既然 NSInteger是基本類型,那么,使用起來就非常簡單。 聲明一個變量, NSInteger myInt; 直接賦值就可以了。 比如: myInt=8;

NSNumber 所擁有的類方法,如下:

+ (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'];

將基本類型數據封裝到NSNumber中后,就可以通過下面的實例方法重新獲取它:

- (char)charValue;

- (int)intValue;

- (float)floatValue;

- (BOOL)boolValue;

- (NSString*)stringValue;

myInt = [intNumber intValue]; //獲取對象的整型值

//[floatnumber floatValue];

//[doublenumber doubleValue];

//[charNumber charValue];

關于NSInteger 和Int:

查到c語言中,int和long的字節數是和操作系統指針所占位數相等。

但c語言中說,long的長度永遠大于或等于int

objective-c里,蘋果的官方文檔中總是推薦用NSInteger

它和int有什么區別呢,stackoverflow這幫大神給了答案。

NSInteger是一個封裝,它會識別當前操作系統的位數,自動返回最大的類型。當你不知道你的操作系統是什么類型的時候,你通常會想要使用NSInteger,所以或許你想要你的int類型范圍盡可能的大,用NSInteger,32位系統NSInteger是一個int,即32位,但當時64位系統時,NSInteger便是64位的。——所以就是一般推薦用NSInteger的

定義的代碼類似于下:

#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.

總結:NSInteger與int的區別是NSInteger會根據系統的位數(32or64)自動選擇int的最大數值(int or long)。

總結

以上是生活随笔為你收集整理的c语言is int number,C语言中NSInteger,NSNumber以及Int的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。