1、OC是在C语言的基础上进行扩展的一种面向对象的编程语言。很多基础知识都和C语言中的非常类似。首先介绍一下OC中的基本数据类型,整体框架如下图:

2、自动数据类型转换顺序:short --> int --> long --> long long --> float --> double --> long double(注意:整型往浮点型自动转换)

强制类型转换:整型转化为浮点型时基本不会有太大的变化,而当浮点转化为整型时,数值的小数部分会直接舍去

3、OC中NSLog输出函数的格式:

格式字符 说明 格式字符 说明
d 带符号十进制 f 小数形式输出,默认输出6位小数
o 无符号八进制 e 指数形式输出,数值不分默认输出6位小数
x 无符号十六进制 g 自动选用%f或%e输出,保证以最简形式输出,并不会输出无意义的0
u 无符号十进制 p 以十六尽职形式输出指针变量所代表的地址值
c 字符形式,只输出一个字符 @ 输出OC对象
s 输出C风格字符串 l 用在d、o、x、u之前用于输出长整型;在f、e、g之前用于输出长浮点型
m 用于制定输出数据所占的最小宽度为m位 .n 对于浮点数,表示输出n位小数,对于字符串,表示截取的字符个数
_ 表述输出的数值向左边对齐    

4、枚举(enum):枚举的本质是无符号整数,可以通过直接用数值的方式给枚举变量进行赋值。

//enum中定义的数值依次取值位0 1 2 3 。。。
enum season {spring, summer, fall, winter} ;
enum season myLove = spring ;
//所以取值为2的是代表秋天fall
enum season yourLove = ;

5、BOOL类型:OV的底层实际上是使用signed char来代表BOOL。

 typedef signed char BOOL;
#if !defined (YES)
#define YES (BOOL)1
#endif #if !defined (NO)
#define NO (BOOL)0
#endif

值得注意的是:BOOL的底层只占用一个字符,所以如果一个非0整数的低八位表示的数为0,则其转化位BOOL类型值为NO。而且YES表示的值是确定的数值1,可以与其进行比较,所以5 == YES的结果是NO,5 > YES的结果是YES.

6、数组定义语法如下。如果定义的是全局数组,则该length不允许是变量,只能是整数值或常量。

 type arrayName[length]

 //可以直接制定length
int arr[] = {, } ; //也可以不指定length,系统自动根据赋值情况来确定
int arr[] = {, , , } ; //多维数组
int arr[][] = {{, , }, {, , }} ; //也可以不全部初始化,但是每一行的维度肯定是一样的
//下面表示定义了一个3行2列的数组,其中第二行只初始化了arr[1][0]元素
int arr[][] = {{,}, {}, {,}} ;

7、OC中的运算符就不多少了,和一般的Java、C的差不多,补充一点就说左移(<<)右移(>>)运算符,左移时低位补0;右移是带符号右移,如果操作数位正数,则高位补0,如果操作数位负数,则高位补1.

8、结构体:将多个基本数据类型的变量组合成一个整体。结构体中访问内部成员用点运算符访问

 //结构体类型定义
struct 结构体类型名

//成员列表
} //结构体变量定义
struct 结构体类型名 变量名; //也可以同时在定义结构体和结构体变量
struct 结构体类型名

//成员列表
}变量名1, 变量名2; //定义Point结构体并定义两个变量
struct Point
{
int x ;
int y ;
int z ;
}location1,location2 ; //定义Point的变量location3并初始化
struct Point location3 = {10,20,30};

9、OC是面向对象的编程语言,与Java类似,OC中的基本数据类型(如short、int、float等)都不是对象,他们都不具备对象的特性,没有属性方法可以被调用。OC中提供了NSValue、NSNumber来封装C语言的基本类型,这样我们就可以让他们具有面向对象的特征了。

  • NSValue是NSNumber的父类,NSValue代表一个更通用的包装类,它可以用于单个的short、int、float、char、指针、对象id等数据项,通过该包装类就可以把short、int、float、char、指针等添加到NSArray、NSSet等集合(集合的元素必须为对象)中。
  • NSNumber是更具体的包装类,主要用于包装C语言的各种数值类型,NSNumber主要包括3类方法:
    • + numberWithXxx:该类方法直接将特定类型的值包装成NSNumber。
    • - initWithXxx:该实例方法需要先创建一个NSNumber对象,再用一个基本类型来初始化NSNumber。
    • - xxxValue:该实例方法返回该NSNumber对象包装的基本类型的值。

10、还有一点值得注意的是,在OC中还存在NSInterger(大致相当于long型整数)、NSUInterger(大致相当于unsigned long型整数)、CGFLoat(在64位平台大致相当于double,在32位系统大致相当于float)三个类型,与Java不同的是,他们并不是包装类,只是用typedef对基本类型进行了重定义而已,他们依然只是基本类型!他们依然只是基本类型!他们依然只是基本类型!重要的事情说三遍。

OC学习1——基本数据类型的更多相关文章

  1. OC学习总结之面向对象和类

    OC学习总结之面向对象和类   Objective-c是c语言的母集合,它的原意就是在原始的c语言的主体上加入面向对象的特性.1.面向对象和面向过程  面向对象和面向过程是编程的两种思考方式.面向对象 ...

  2. OC学习6——面相对象的三大特性

    我们在学习Java的时候都知道,类有三大特性:继承,封装,多态,这也是面向对象的三大特征.OC学习篇之---类的三大特性(封装,继承,多态) 1.封装(Encapsulation)是指将对象的状态信息 ...

  3. OC学习5——类和对象

    1.OC是在C语言基础上进行扩展得到的一门面向对象的程序设计语言,它也提供了定义类.成员变量和方法的基本功能.类可以被认为是一种自定义的数据类型,使用它可以定义变量,所有使用类定义的变量都是指针类型的 ...

  4. JavaScript学习10 JS数据类型、强制类型转换和对象属性

    JavaScript学习10 JS数据类型.强制类型转换和对象属性 JavaScript数据类型 JavaScript中有五种原始数据类型:Undefined.Null.Boolean.Number以 ...

  5. IOS开发-OC学习-常用功能代码片段整理

    IOS开发-OC学习-常用功能代码片段整理 IOS开发中会频繁用到一些代码段,用来实现一些固定的功能.比如在文本框中输入完后要让键盘收回,这个需要用一个简单的让文本框失去第一响应者的身份来完成.或者是 ...

  6. OC学习16——对象归档

    转载自  OC学习篇之---归档和解挡 OC中的归档就是将对象写入到一个文件中,Java中的ObjectInputStream和ObjectOutputStream来进行操作的.当然在操作的这些对象都 ...

  7. OC学习11——循环引用与@class

    转载自 OC学习篇之---@class关键字的作用以及#include和#import的区别 一.#import和#include的区别 当我们在代码中使用两次#include的时候会报错:因为#in ...

  8. OC学习9——反射机制

    1.OC提供了3种编程方式与运行环境进行交互: 直接通过OC的源代码:这是最常见的方式,开发人员只是编写OC源代码,而运行环境负责在后台工作. 通过NSObject类中定义的方法进行动态编程:因为绝大 ...

  9. Gluon学习03-基础数据类型Ndarray

    Gluon学习03-基础数据类型Ndarray 小书匠 kindle  目录,方便快速定位: 1.安装cuda与cudnn 2.安装mxnet-gpu 本机环境介绍: 系统:Linuxmint Pyt ...

随机推荐

  1. Datatable的操作方法

    DataTable操作相关内容: 对DataTable 的一些操作在dataTable中最容易想到的是用for循环来操作,但事实不到万不得已是不会用for循环的,因为效率一般不高. 1. 取行-取行一 ...

  2. EOS.IO Technical White Paper v2

    [EOS.IO Technical White Paper v2] Abstract: The EOS.IO software introduces a new blockchain architec ...

  3. 单点登录(SSO)解决方案之 CAS 入门案例

    单点登录: 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. ...

  4. Linux 子网掩码计算, 二进制十进制互相转换

    看下边例子 192.168.0.1/24 192.168.0.1/32 192.168.0.1/28 上边24,32,28对应的掩码都是什么,怎么计算的 24,32,28,对应的就是多少个二进制的1 ...

  5. python list中append()方法和extend()方法区别

    共同点 只能作用于list类型(不能作用于tuple等其他类型) 单参数限制(不支持多参数) 不同点 list.append(object) 向列表中添加一个对象object. 使用append的时候 ...

  6. Unity 2018 By Example 2nd Edition

    Unity is the most exciting and popular engine used for developing games. With its 2018 release, Unit ...

  7. lenet-5

    https://blog.csdn.net/happyorg/article/details/78274066 深度学习 CNN卷积神经网络 LeNet-5详解 2017年10月18日 16:04:3 ...

  8. SecureCRT问题

    使用SecureCRT 与虚拟机进行通信,提示The remote system refused the connection 解决:由于缺少SSH服务器端 sudo apt-get install ...

  9. centos free详解

    CentOS 6及以前 $ free total used free shared buffers cached Mem: 4040360 4012200 28160 0 176628 3571348 ...

  10. 三 分析easyswoole源码(启动服务&TableManager,略提及Cache工具的原理)

    前文连接,讲了es是如何启动swoole服务的. 里面有一个工具类TableManager.这个类为了处理进程间数据共享.是对swoole_table的一层封装swoole_table一个基于共享内存 ...