美文网首页
基本数据类型的有关概念

基本数据类型的有关概念

作者: 温柔vs先生 | 来源:发表于2017-08-31 14:28 被阅读0次

    bool和BOOL的区别

    说明:Objective-C 中的BOOL 实际上是一种对带符号的字符类型(signed char)的类型定义(typedef),它使用8位的存储空间。通过#define指令把YES定义为1,NO定义为0。
    注意:objective-c 并不会将BOOL作为仅能保存YES或NO值的真正布尔类型来处理。编译器仍将BOOL认作8位二进制数,YES 和 NO 值只是在习惯上的一种理解。
    问题:如果不小心将一个大于1字节的整型值(比如short或int)赋给一个BOOL变量,那么只有低位字节会用作BOOL值。如果该低位字节刚好为0(比如8960,写成十六进制为0x2300),BOOL值将会被认作是0,即NO值。而对于bool类型,只有true和false的区别,即0为false,非0为true。
    举例:
    BOOL b1=8960; // 实际是 NO,因为8960换成十六进制为0x2300,BOOL 只有8位存储空间,取0x2300的低8位,00,所以是NO;
    bool b2=8960;//实际是true,因为bool类型,非0即为true。

    NSInteger和int

    object-c的数据类型有NSString,NSNumber,NSArray,NSMutableArray,NSData等等,这些都是class,创建后便是对象。
    C语言的基本数据类型int,只是一定字节的内存空间,用于存放数值;
    NSInteger是基本数据类型,并不是NSNumber的子类,当然也不是NSObject的子类。
    NSInteger是基本数据类型Int或者Long的别名(NSInteger的定义typedef long NSInteger),它的区别在于,NSInteger会根据系统是32位还是64位来决定是本身是int还是Long。

    引用(http://www.jianshu.com/p/987fb6fb49dc)

    相关文章

      网友评论

          本文标题:基本数据类型的有关概念

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