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

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

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


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

       ).   BOOL的本质.

                 typedef signed char BOOL;

                 实际上BOOL类型的变量  是1个有符号的char变量.

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

    BOOL b2 = YES;
char b3 = ;

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

 BOOL的本质.

                 typedef signed char BOOL;

                 实际上BOOL类型的变量  是1个有符号的char变量.

                 #define YES ((BOOL)1)
#define NO ((BOOL)0) YES 实际上就是
NO 实际上就是

Boolean类型的本质:

typedef unsigned char                   Boolean;

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

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

#define true 1
#define false 0

这句话

Boolean b1 = false;

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

unsigned char b1 = ;

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

    //Boolean b1 = 0;
Boolean b1 = ;
//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 = ;
int num2 = ;
//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 = ;
//Boolean b1 = 1;
//Boolean b1 = 20;
//unsigned char b1 = 0;
}
return ;
}

14_传智播客iOS视频教程_OC的数据类型的更多相关文章

  1. 13_传智播客iOS视频教程_OC程序的编译链接

    C程序的编译.链接.执行怎么来的?在.C文件里面写上符合C语言部分的源代码.OC也是一样的.记住:OC程序的后缀名是.m. 为什么要链接?第一个.o的目标文件里面它启动不了.因为它没有启动代码我们要加 ...

  2. 15_传智播客iOS视频教程_OC语言完全兼容C语言

    OC支持C语言所有的运算符并且效果是一样的.C语言中所有的运算符OC都支持.这些所有的运算符OC当中全部都支持. 包括C语言的结构体.枚举全部都可以写在OC当中,没有任何问题,并且效果是一样的. 比如 ...

  3. 08_传智播客iOS视频教程_Foundation框架

    比如产生随机数.这个功能要你写吗?不用,因为苹果已经写好了.后面想开发一个ios程序,往界面上放一个按钮,实际上这个按钮不用你写别人已经写好了,你就拿过来拖一下就可以了. 框架是1个功能集 苹果或者第 ...

  4. 11_传智播客iOS视频教程_NS前缀和@符号

    NS前缀的有NSLog和NSString Cocoa就是用来开发带界面的应用程序. Foundation框架之中的类.函数绝大多数都是从NextStep来的.看到NS前缀就知道这个类是从哪里来的.是很 ...

  5. 12_传智播客iOS视频教程_注释和函数的定义和调用

    OC的注释和C语言的注释一模一样.它也分单行注释和多行注释. OC程序里面当然可以定义一个函数.并且定义的方式方法和调用的方式方法和我们C语言是一模一样的.OC有什么好学的?一样还学个什么呢? 重点是 ...

  6. 10_传智播客iOS视频教程_NSString

    从今天开始不会再去用C语言当中的字符串.因为OC当中设计了一种更为好用的存储字符串的变量. C的字符串和OC的字符串是有区别的. NSString类型的指针变量,只能存储OC字符串的地址.第一步是声明 ...

  7. 09_传智播客iOS视频教程_自动释放池与NSLog函数

    不要管什么是自动释放池,现在给你讲你也听不懂.就业班才讲,不要知道太多,知道太多对你不好.电影里面死的最惨的人就是知道最多的人.把代码写到自动释放池里面就可以了.NSLog是printf的增强版,它增 ...

  8. 07_传智播客iOS视频教程_#import指令

    mac切换中英文输入法默认是Ctrl+空格键. 预处理指令的执行时机是在编译之前.在编译之前执行预处理指令. #import指令是包含文件,将指定的文件的内容在预编译的时候拷贝到写指令的地方. #im ...

  9. 06_传智播客iOS视频教程_源文件后缀名和main函数

    OC与C语言的不同. 把OC程序运行起来,CPU只会找main函数.并且只会执行main函数当中的代码.当main函数的代码执行完毕之后这个程序就自动结束掉了. main函数的参数是可以让我们在运行程 ...

随机推荐

  1. vim 编辑器使用法则

    vim 编辑器使用法则 Vi编辑器有3种使用模式:一般模式.编辑模式和命令模式. $SHELL:查看当前默认shell类型  $BASH_VERSION:查看当前shell版本 3.一般模式: 光标移 ...

  2. os系统安装Python虚拟环境virtualenv和virtualenvwrapper

    一.安装Python 上节已经讲了如何安装Python2和Python3 二.给Python3安装virtualenv 在终端输入:sudo pip3 install virtualenv 等待安装成 ...

  3. jsp获取绝对路径----${pageContext.request.contextPath}

    JSP取得绝对路径 在JavaWeb开发中,常使用绝对路径的方式来引入JavaScript和CSS文件,这样可以避免因为目录变动导致引入文件找不到的情况,常用的做法如下: 一.使用${pageCont ...

  4. 一练Splay之维修数列第一次

    平衡树并不是之前没写过,觉得有必要把平衡树变成考场上能敲的东西,也就是说,考一道诸如“维修数列”这样的送分题,要能拿满分. 维修数列.给定一个数列支持以下操作: 输入的第1 行包含两个数N 和M(M ...

  5. Linux下汇编语言学习笔记14 ---

    这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...

  6. Elasticsearch的Java API做类似SQL的group by聚合。

    https://www.cnblogs.com/kangoroo/p/8033955.html

  7. poj——3687 Labeling Balls

    Labeling Balls Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 14835   Accepted: 4346 D ...

  8. codevs——1742 爬楼梯

    1742 爬楼梯  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 小明家外面有一个长长的楼梯,共N阶.小明的 ...

  9. cogs 48. [NOIP2007] 字符串的展开

    48. [NOIP2007] 字符串的展开 ★☆   输入文件:expand.in   输出文件:expand.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述] 在初赛普 ...

  10. Lua:ipairs和pairs的区别

    ipairs 和pairs在lua中都是遍历tbale的函数但是两者有区别 1.pairs遍历table中的所有的key-vale 而ipairs会根据key的数值从1开始加1递增遍历对应的table ...