对比一下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. JS 去除字符串空格

    $.trim()是jQuery提供的函数,用于去掉字符串首尾的空白字符. "abc 123 def".replace(/\s/g, "") 去除所有的空格

  2. jquery 点击弹框

    <a href="#" class="big-link" data-reveal-id="myModal" data-animatio ...

  3. 数据库 SQL SQL转义

    SQL转义 @author ixenos 前言 类似文件分隔符在不同系统的实现不同,我们需要一个中间的转义字符来作为接口,各厂商再具体实现 而SQL的转义语法主要为了支持各种数据库普遍支持的特性,但各 ...

  4. 扫描局域网内所有主机和MAC地址的Shell脚本

    #!/bin/bash #author: InBi #date: 2011-08-16 #website: http://www.itwhy.org/2011/08-20/939.html ##### ...

  5. [SPOJ8222]Substrings

    [SPOJ8222]Substrings 试题描述 You are given a string S which consists of 250000 lowercase latin letters ...

  6. HDU1024 多段最大和 DP

    题目大意: 在n个数,求不重复的m段中的数据总和的最大值 令dp[i][j]表示将前j个数分成 i 段时得到的最大值(必取到第 j 个数) 状态转移可列为 dp[i][j]=Max(dp[i][j-1 ...

  7. 587. Erect the Fence

    Problem statement: There are some trees, where each tree is represented by (x,y) coordinate in a two ...

  8. 【springmvc】传值的几种方式&&postman接口测试

    最近在用postman测试postman接口,对于springmvc传值这一块,测试了几种常用方式,总结一下.对于postman这个工具的使用也增加了了解.postman测试很棒,有了工具,测试接口, ...

  9. 【ZJOI2017 Round1练习】D8T3 stone(Nim游戏)

    题意: 思路:与其类似的题是HDU5996 HDU5996为判定性问题,稍加改动就可以用来统计方案数 ..]of longint; v,cas,i,j,ans,tmp,n,s,k:longint; b ...

  10. Linux下C编程入门(7)

    Linux下项目同步工具介绍git和github 一.远程仓库工具github 1. 一.本地操作工具git 1.