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. Ubuntu安装软件提示boot空间不足

    用sudo apt-get install gitlab-ci-multi-runner安装应用都会出现“gzip: stdout: No space left on device”的问题. boot ...

  2. python 网络编程 缓冲和粘包

    tcp:属于长连接,与一个客户端进行连接了以后,其他的客户端要等待,要连接另外一个,必须优雅的断开前面这个客户端的连接. 允许地址重用:在bind IP地址和端口之前加上,# server.setso ...

  3. POJ 1741 Tree(点分治点对<=k)

    Description Give a tree with n vertices,each edge has a length(positive integer less than 1001). Def ...

  4. [leetcode]41. First Missing Positive第一个未出现的正数

    Given an unsorted integer array, find the smallest missing positive integer. Example 1: Input: [1,2, ...

  5. 使用GO开发ChainCode

    本来不会GO,最近突击学了些GO的基础,就开始搞chaincode了. 首先给大家推荐一个非常好的Hyperldeger Fabric项目 marble:https://github.com/ibm- ...

  6. 第四次spring会议

    昨天:对TXT的字体颜色和背景进行了代码编写. 出现的问题:在网上找到如何编写代码后,自己打进去了,输出不出来.少打了一个空格在EventArgs e之间. 今天将做之事: 我设置上换肤和透明度等功能 ...

  7. Django手册

    Django教程 Python一直是我最喜欢的语言,在Django和Tornado之间我选择了前者,没有特别的原因,网上人云亦云的,肯定不会有一方离另一方差很远,我就直接去看了看Github上两个项目 ...

  8. ActiveMQ_5死信队列

    activemq死信队列 DLQ-死信队列(Dead Letter Queue)用来保存处理失败或者过期的消息. 出现以下情况时,消息会被redelivered: A transacted sessi ...

  9. mongoDB实现MapReduce

    一.MongoDB Map Reduce Map-Reduce是一种计算模型,简单的说就是将大批量的工作(数据)分解(MAP)执行,然后再将结果合并成最终结果(REDUCE).MongoDB提供的Ma ...

  10. JavaScript基础视频教程总结(041-050章)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...