14_传智播客iOS视频教程_OC的数据类型
对比一下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的数据类型的更多相关文章
- 13_传智播客iOS视频教程_OC程序的编译链接
C程序的编译.链接.执行怎么来的?在.C文件里面写上符合C语言部分的源代码.OC也是一样的.记住:OC程序的后缀名是.m. 为什么要链接?第一个.o的目标文件里面它启动不了.因为它没有启动代码我们要加 ...
- 15_传智播客iOS视频教程_OC语言完全兼容C语言
OC支持C语言所有的运算符并且效果是一样的.C语言中所有的运算符OC都支持.这些所有的运算符OC当中全部都支持. 包括C语言的结构体.枚举全部都可以写在OC当中,没有任何问题,并且效果是一样的. 比如 ...
- 08_传智播客iOS视频教程_Foundation框架
比如产生随机数.这个功能要你写吗?不用,因为苹果已经写好了.后面想开发一个ios程序,往界面上放一个按钮,实际上这个按钮不用你写别人已经写好了,你就拿过来拖一下就可以了. 框架是1个功能集 苹果或者第 ...
- 11_传智播客iOS视频教程_NS前缀和@符号
NS前缀的有NSLog和NSString Cocoa就是用来开发带界面的应用程序. Foundation框架之中的类.函数绝大多数都是从NextStep来的.看到NS前缀就知道这个类是从哪里来的.是很 ...
- 12_传智播客iOS视频教程_注释和函数的定义和调用
OC的注释和C语言的注释一模一样.它也分单行注释和多行注释. OC程序里面当然可以定义一个函数.并且定义的方式方法和调用的方式方法和我们C语言是一模一样的.OC有什么好学的?一样还学个什么呢? 重点是 ...
- 10_传智播客iOS视频教程_NSString
从今天开始不会再去用C语言当中的字符串.因为OC当中设计了一种更为好用的存储字符串的变量. C的字符串和OC的字符串是有区别的. NSString类型的指针变量,只能存储OC字符串的地址.第一步是声明 ...
- 09_传智播客iOS视频教程_自动释放池与NSLog函数
不要管什么是自动释放池,现在给你讲你也听不懂.就业班才讲,不要知道太多,知道太多对你不好.电影里面死的最惨的人就是知道最多的人.把代码写到自动释放池里面就可以了.NSLog是printf的增强版,它增 ...
- 07_传智播客iOS视频教程_#import指令
mac切换中英文输入法默认是Ctrl+空格键. 预处理指令的执行时机是在编译之前.在编译之前执行预处理指令. #import指令是包含文件,将指定的文件的内容在预编译的时候拷贝到写指令的地方. #im ...
- 06_传智播客iOS视频教程_源文件后缀名和main函数
OC与C语言的不同. 把OC程序运行起来,CPU只会找main函数.并且只会执行main函数当中的代码.当main函数的代码执行完毕之后这个程序就自动结束掉了. main函数的参数是可以让我们在运行程 ...
随机推荐
- 集训第五周动态规划 E题 LIS
Description The world financial crisis is quite a subject. Some people are more relaxed while others ...
- Spring AOP配置简单记录(注解及xml配置方式)
在了解spring aop中的关键字(如:连接点(JoinPoint).切入点(PointCut).切面(Aspact).织入(Weaving).通知(Advice).目标(Target)等)后进行了 ...
- Linux 文件与目录结构
[Linux文件] Linux 系统中一切皆文件. [Linux目录结构] --/bin 是Binary的缩写, 这个目录存放着最经常使用的命令. --/sbin s就是Super User的意思,这 ...
- 2-sat相关知识
转载:http://blog.csdn.net/luyuncheng/article/details/15172827 此题好纠结啊...其实2-sat关键是建边 此题网上好多题解都是直接说了建边而且 ...
- codeforces 330b
#include<stdio.h> #include<string.h> #include<stdlib.h> #define N 1100 int map[N]; ...
- android开发里跳过的坑——android studio升级完成后eclipse adt无法正常使用
最近有时间,把android studio做了一次升级,升级完成后,悲催的发现eclipse不能正常运行了,网上查了好多资料,试了很多方法都不行,最后把eclipse使用的sdk与AS使用的SDK区分 ...
- php框架之自动加载与统一入口
现在PHP有很多的框架,基本都是以MVC为基础进行设计的.其实很多框架(像thinkphp,zf,symfont等)都有两个特性,自动加载类文件和统一入口.这里就简单实现以上两个特性. 假设PHP使用 ...
- 2018牛客网暑期ACM多校训练营(第一场)D图同构,J
链接:https://www.nowcoder.com/acm/contest/139/D来源:牛客网 同构图:假设G=(V,E)和G1=(V1,E1)是两个图,如果存在一个双射m:V→V1,使得对所 ...
- Ubuntu 16.04安装Ubuntu After Install工具实现常用软件批量安装
这个软件集成了常用且好用的软件,且只需要选择需要的软件之后自动安装好,不需要额外设置. 安装: sudo add-apt-repository ppa:thefanclub/ubuntu-after- ...
- mysql排序关于英文字母abcd..xyz排序。
mysql会自动进行比如pxj,pyj. 再根据p进行排序时候,会自动进行第二个字母的排序 select * from tbl_actor where first_char like 'p%' ord ...