美文网首页面试专题iOS基础
OC常用基本数据类型所占字节数

OC常用基本数据类型所占字节数

作者: 小小在流浪 | 来源:发表于2019-03-15 10:53 被阅读0次

    在了解OC对象之前,插入个题外,我们先了解一下OC基本数据类型所占字节数。
    通过Xcode,Shift+Command + O 我们可以查找OC基本数据类型的定义。

    以下是比较列举的是比较常见的数据类型

    (目前市面上几乎没有32位的手机在使用了)

    C Objective-C 32位 64位
    bool BOOL(64位) 1 1
    signed char (_ _signed char)int8_t、BOOL(32位) 1 1
    unsigned char Boolean 1 1
    short int16_t 2 2
    unsigned short unichar 2 2
    int int32_t、NSInteger(32位)、boolean_t(32位) 4 4
    unsigned int boolean_t(64位)、NSUInteger(32位) 4 4
    long NSInteger(64位) 4 8
    unsigned long NSUInteger(64位) 4 8
    long long int64_t 8 8
    float CGFloat(32位) 4 4
    double CGFloat(64位) 8 8
    signed:声明有符号类型变量
    unsigned:声明无符号类型变量
    int8_t 被定义为 __signed char、前面有_ _符号
    BOOL在32位机器被定义为signed char、在64位机器被定义为bool
    boolean_t在32位机器被定义为unsigned int、在64位机器被定义为int
    NSInteger在32位机器被定义为int、在64位机器被定义为long
    NSUInteger在32位机器被定义为unsigned int、在64位机器被定义为unsigned long
    CGFloat在32位机器被定义为float、在64位机器被定义为double
    
    由于C语言只会将bool的非0值置为1,因此,BOOL的使用过程中应注意在32位机器上,并非只有1和0两种可能取值,取值范围是-128~127。
    

    我们可以通过Xcode,使用sizeof()方法,验证上面的数据类型所占字节大小。
    64位环境下的iPhone。

    NSLog(@"********64位环境********");
    NSLog(@"bool size:%@",@(sizeof(bool)));
    NSLog(@"BOOL size:%@",@(sizeof(BOOL)));
    NSLog(@"char size:%@",@(sizeof(char)));
    NSLog(@"int8_t size:%@",@(sizeof(int8_t)));
    NSLog(@"unsigned char size:%@",@(sizeof(unsigned char)));
    NSLog(@"Boolean size:%@",@(sizeof(Boolean)));
    NSLog(@"short size:%@",@(sizeof(short)));
    NSLog(@"int16_t size:%@",@(sizeof(int16_t)));
    NSLog(@"unsigned short size:%@",@(sizeof(unsigned short)));
    NSLog(@"unichar size:%@",@(sizeof(unichar)));
    NSLog(@"int size:%@",@(sizeof(int)));
    NSLog(@"int32_t size:%@",@(sizeof(int32_t)));
    NSLog(@"unsigned int size:%@",@(sizeof(unsigned int)));
    NSLog(@"boolean_t size:%@",@(sizeof(boolean_t)));
    NSLog(@"long size:%@",@(sizeof(long)));
    NSLog(@"NSInteger size:%@",@(sizeof(NSInteger)));
    NSLog(@"long size:%@",@(sizeof(long)));
    NSLog(@"unsigned long size:%@",@(sizeof(unsigned long)));
    NSLog(@"NSUInteger size:%@",@(sizeof(NSUInteger)));
    NSLog(@"long long size:%@",@(sizeof(int64_t)));
    NSLog(@"double size:%@",@(sizeof(CGFloat)));
    

    打印如下

    2019-03-15 10:51:36.718391+0800 iOSProject[28310:10739021] ********64位环境********
    2019-03-15 10:51:36.718741+0800 iOSProject[28310:10739021] bool size:1
    2019-03-15 10:51:36.718817+0800 iOSProject[28310:10739021] BOOL size:1
    2019-03-15 10:51:36.718856+0800 iOSProject[28310:10739021] char size:1
    2019-03-15 10:51:36.718895+0800 iOSProject[28310:10739021] int8_t size:1
    2019-03-15 10:51:36.718928+0800 iOSProject[28310:10739021] unsigned char size:1
    2019-03-15 10:51:36.718960+0800 iOSProject[28310:10739021] Boolean size:1
    2019-03-15 10:51:36.718993+0800 iOSProject[28310:10739021] short size:2
    2019-03-15 10:51:36.719025+0800 iOSProject[28310:10739021] int16_t size:2
    2019-03-15 10:51:36.719059+0800 iOSProject[28310:10739021] unsigned short size:2
    2019-03-15 10:51:36.719092+0800 iOSProject[28310:10739021] unichar size:2
    2019-03-15 10:51:36.719125+0800 iOSProject[28310:10739021] int size:4
    2019-03-15 10:51:36.719158+0800 iOSProject[28310:10739021] int32_t size:4
    2019-03-15 10:51:36.719190+0800 iOSProject[28310:10739021] unsigned int size:4
    2019-03-15 10:51:36.719222+0800 iOSProject[28310:10739021] boolean_t size:4
    2019-03-15 10:51:36.719297+0800 iOSProject[28310:10739021] long size:8
    2019-03-15 10:51:36.719334+0800 iOSProject[28310:10739021] NSInteger size:8
    2019-03-15 10:51:36.719367+0800 iOSProject[28310:10739021] long size:8
    2019-03-15 10:51:36.719401+0800 iOSProject[28310:10739021] unsigned long size:8
    2019-03-15 10:51:36.719435+0800 iOSProject[28310:10739021] NSUInteger size:8
    2019-03-15 10:51:36.719471+0800 iOSProject[28310:10739021] long long size:8
    2019-03-15 10:51:36.719503+0800 iOSProject[28310:10739021] double size:8
    

    相关文章

      网友评论

        本文标题:OC常用基本数据类型所占字节数

        本文链接:https://www.haomeiwen.com/subject/foflmqtx.html