14_传智播客iOS视频教程_OC的数据类型

对比一下OC和C差别,首先第一个是数据类型。

C语言的数据类型分哪几类?C语言有哪些数据类型?

基本数据类型当然还包括int的一些修饰符。像short、long、long long、unsigned。typedefine给已有的数据类型取一个别名。


 C语言还新增了一些数据类型:BOOL类型。条件表达式:比较表达式/关系表达式,第二种是逻辑表达式.C语言用int类型的变量来表示比较表达式/关系表达式和逻辑表达式的结果。0表示不成立,非0表示成立。

       3).   BOOL的本质.
    
                 typedef signed char BOOL;
 
                 实际上BOOL类型的变量  是1个有符号的char变量.

所以BOOL b1在内存当中是占1个字节。OC所谓的新增数据类型99.99%的情况下都是typedef

    BOOL b2 = YES;
    char b3  =  1;

所以这两句话在内存上没有任何区别。BOOL类型的可读性高一些。所以从今天开始要存储一个条件表达式的结果,请你使用BOOL类型。OC当中新增的第一个类型:BOOL类型。

 BOOL的本质.
    
                 typedef signed char BOOL;
 
                 实际上BOOL类型的变量  是1个有符号的char变量.
 
                 #define YES ((BOOL)1)
                 #define NO  ((BOOL)0)
 
                 YES  实际上就是   1
                 NO   实际上就是   0

Boolean类型的本质:

typedef unsigned char                   Boolean;

Boolean其实是一个无符号的char类型.

true和false更直接,他们两个其实是两个宏.

#define true 1
#define false 0

这句话

Boolean b1 = false;

在预编译的时候已经换成了这句话

unsigned char b1 = 0;

所以可以给Boolean类型的变量赋一个数字给它,包括0和1.因为Boolean类型的变量b1是char类型.

    //Boolean b1 = 0;
    Boolean b1 = 10;
    //Boolean b1 = 1;
    //Boolean b1 = 20;

为什么要搞个Boolean类型的变量?因为可读性高一些。


现在要表示一个条件表达式有两种,一个是BOOL,一个是Boolean.用哪个呢?但是记住要用BOOL类型,因为BOOL类型(布尔类型)四个字母就搞定了,简洁明了.绝大部分情况我们都是使用布尔BOOL.为什么有了布尔类型BOOL还要搞一个Boolean类型呢?因为它要吸引别的程序员。有的编程语言里面叫BOOL,有的编程语言里面叫Boolean.例如C#叫BOOL,java里面叫Boolean.这样它就可以吸引别的语言的程序员过来。我们平时就用BOOL.


这就是OC在C语言基础之上新增的两个数据类型:BOOL和Boolean。.


/*
   1.  OC中的数据类型.
 
         1).  OC中支持C语言中的所有的数据类型.
        
              a.  基本数据类型
                
                  int  double  float  char
              
              b.  构造类型
 
                  数组  结构体   枚举
 
              c.  指针类型
                  int *p1;
 
              d.  空类型.
                  void
 
              e.  typedef自定义类型.
 
             
           2).   BOOL类型.
 
                 1). 可以存储YES或者NO中的任意1个数据.
   
                 2). 一般情况下BOOL类型的变量用来存储条件表达式的结果.如果条件表达式成立 那么结果就是YES
 
                     如果条件表达式不成立  结果就是NO
 
                 3).   BOOL的本质.
    
                 typedef signed char BOOL;
 
                 实际上BOOL类型的变量  是1个有符号的char变量.
 
                 #define YES ((BOOL)1)
                 #define NO  ((BOOL)0)
 
                 YES  实际上就是   1
                 NO   实际上就是   0
           3).   Boolean
                 a.Boolean类型的变量可以存储true或者false
                 b.一般情况下BOOL类型的变量用来存储条件表达式的结果.如果条件表达式成立 那么结果就是true
                   如果条件表达式不成立  结果就是false
                 c.本质
                   typedef unsigned char                   Boolean;
            
           4).  class类型.  类.
 
        
           5).  id类型   万能指针.
 
 
           6).   nil   与NULL差不多.
 
           7).   SEL  方法选择器.
 
           8).   block  代码段.
 
 
      
 
 */

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    //int num = 12;
    int num1 = 10;
    int num2 = 20;
    //BOOL  b1 = YES;
    //Bool b1 = NO;
    //BOOL b1 = mum1 > num2;//条件表达式的结果就可以存在b1这个变量里面去了
    //BOOL b2 = YES;
    //char b3  =  1;
    //Boolean b1 = num1 > num2;
    //Boolean b1 = false;
    //Boolean b1 = 0;
    Boolean b1 = 10;
    //Boolean b1 = 1;
    //Boolean b1 = 20;
    //unsigned char b1 = 0;
    }
    return 0;
}
原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/7136948.html