文章目录

  • 2.数据类型与表达式
    • 2.1数据类型与常量
      • 2.1.1基本数据类型
        • 1. int类型
        • 2. float类型
        • 3. char 类型
        • 4. BOOL类型
      • 2.1.2限定词
        • 1. long
        • 2. long long
        • 3. short
        • 4. unsigned
        • 5. signed
      • 2.1.3 id与instancetype
        • 1. id类型
        • 2. instancetype类型
        • 3. id和instancetype的区别
    • 2.2 算数表达式
      • 2.2.1 基本运算符
      • 2.2.2 数据类型转换
    • 2.3 循环结构(空的)
    • 2.4 选择结构(空的)
    • 2.5 typedef语句

2.数据类型与表达式

2.1数据类型与常量

Object-C是在C语言基础上拓展出的新语言,所以它是完全兼容C语言代码的,除了C中基本数据类型,如:int、float等,Object-C中还拓展了新的数据类型如BOOL、id、instancetype等。

2.1.1基本数据类型

1. int类型

  整数常量由一个或多个数字的序列组成,序列前的负号表示该值是一个负值,数字中间不允许插入空格或逗号。
  一个int类型的值取值范围在不同设备中是不同的。在32位系统中,一个int占4字节;在64位系统中,占8字节,所以在64位系统中,int的取值范围大于32位系统的。在开发过程中,格式化输出,可以使用%d或%i。
  示例:

int num = 10 ;
NSLog(@"%d", num);

2. float类型

  float类型是可以存储包含小数位的数值,格式化输出时可以使用%f 或者%g 。另外,%.2f 表示保留两位小数,其他以此类推。

float f = 10.1234;
NSLog(@"f, %.2f", f, f);

3. char 类型

  char类型可以存储单个字符,将字符放入一对单引号中就可以得到一个字符常量。格式化输出用%c 。

char c = 'a';
NSLog(@"%c", c);

4. BOOL类型

  BOOL类型其实是一种称为预处理程序的机制添加的。Object-C中的BOOL通过#define指令把YES定义为1,NO定义为0。例如,给一个BOOL类型的变量赋值为23是可以编译成功的,编译器在处理过程中会将该变量认定为真,因为BOOL类型逻辑上来说是非零即真。
  BOOL类型的本质:

typedef signed char BOOL;

  BOOL类型的变量取值:

#define YES (BOOL)1;
#define NO (BOOL)0;

2.1.2限定词

Object-C中,在变量的声明过程中,还可以加上一些限定词。常见的限定词主要有:long、long long、short、unsigned、signed。

1. long

2. long long

3. short

4. unsigned

5. signed

2.1.3 id与instancetype

1. id类型

  id数据类型可以存储任何类型的对象。从某种意义上说,它是通用对象类型,这和C语言中的void* 很相似。如果要用基本类型代替, 需要对基本数据类型进行封装。 id是一个指向任意一个继承了NSObject类的对象。
  需要注意的是,id是一个指针,所以在使用id时候不需要加*号。例如:

NSArray *array = @[@123, @"ios"];
id obj = array[1];
NSLog(@"%@", obj);

  id类型是Object-C中常使用的一种重要数据类型,它是Object-C动态绑定的基础。

2. instancetype类型

  在类方法中,例如以alloc、new开头的方法,以及实例方法中autorelease、init、retain等方法返回值类型就是instancetype类型,这些就称为关联返回类型的方法。这些方法的返回值是一个以方法所在的类位类型的对象。例如,在NSObject类的alloc和init方法,调用后会返回一个NSObject类型的对象。
  使用instancetype作为方法返回值的好处是可以确定对象类型,以便帮助编译器更好地定位代码问题。

3. id和instancetype的区别

  id和instancetype的相同点在于都可以作为方法的返回值类型。而两者的不同点体现在:

  • id可以作为方法或函数的参数的类型,也可以单独用这种类型定义变量,但是instancetype不行。
  • 如果方法的返回值是instancetype,那么它返回的一定是这个类型的对象;如果返回值类型是id,那么它返回的是未知类型的对象。

2.2 算数表达式

2.2.1 基本运算符

  这个在C语言基础都有,只介绍在Object-C中,常用的是+、/、-、*、%、自增、自减。

2.2.2 数据类型转换

  类型转换的一般形式位"(类型说明符)(表达式)",示例:(float)a //把变量a转化为float型。

2.3 循环结构(空的)

2.4 选择结构(空的)

2.5 typedef语句

  Object-C允许开发者为已经定义过的数据类型指派一个别名,这就需要使用typedef语句。

iOS开发(一)——Object-c语言基础(2、数据类型与表达式)相关推荐

  1. IOS开发入门之一——Swift语言基础

    需要iOS视频资料可以加我微信: 1914532832  验证信息请注明:IOS开发 很多新人对IOS开发很迷茫,不知道从何下手?看完本系列,你将会觉得IOS入门其实很简单.要学习IOS开发,当然是先 ...

  2. 01_Java语言基础部分(数据类型与表达式、流程控制语句、数组与方法)

    1. Java语言主要由5中符号组成 标识符:数字.字母.美元符.下划线(注意不能数字开头) 关键字(被Java赋予特殊意义的单词,注意所有关键字都是小写):   goto和const保留了它们,但是 ...

  3. iOS开发教程之OC语言-欧阳坚-专题视频课程

    iOS开发教程之OC语言-34296人已学习 课程介绍         Objective-C是扩充C的面向对象编程语言,iOS开发是用的Objective-C语言,本专题更系统的讲解Objectiv ...

  4. Go语言基础之数据类型

    Go语言基础之数据类型 Go语言中有丰富的数据类型,除了基本的整型.浮点型.布尔型.字符串外,还有数组.切片.结构体.函数.map.通道(channel)等.Go 语言的基本类型和其他语言大同小异. ...

  5. c语言分量的运算符,C语言基础(04-运算符和表达式)

    运算符(也叫操作符)--运算符是一个表示特定的数学或逻辑操作的符号.如'+'号,表示了一个相加运算:'&&'号表示了一个逻辑'与'的运算.由运算符把需要进行运算的各个量(常量或变量)连 ...

  6. C语言基础知识-数据类型

    C语言基础知识-数据类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常量与变量 1>.关键字 C的关键字共有32个.1>.数据类型关键字(12个)char,sh ...

  7. c语言数据类型与表达式,C语言的基本数据类型与表达式.ppt

    <C语言的基本数据类型与表达式.ppt>由会员分享,可在线阅读,更多相关<C语言的基本数据类型与表达式.ppt(38页珍藏版)>请在装配图网上搜索. 1.C语言的基本数据类型常 ...

  8. 【零基础学习iOS开发】【02-C语言】10-函数

    一.基本概念 1.什么是函数 不论什么一个C语言程序都是由一个或者多个程序段(小程序)构成的.每一个程序段都有自己的功能,我们一般称这些程序段为"函数". 所以.你能够说C语言程序 ...

  9. [黑马IOS自学第九篇]OC语言基础,面向对象概念,类的创建,OC多文件开发等

    Extends Coc .EnhancedCc++/ .C-like c# 会在github上开源一个库,如果是私有库要交钱,自己o公司的项目不要勾 会把源代码提交上去 <span style= ...

  10. iOS开发面试知识整理 – OC基础 (二)

    iOS | 面试知识整理 – OC基础 (二) 1.C和 OC 如何混编 xcode可以识别一下几种扩展名文件: .m文件,可以编写 OC语言 和 C 语言代码 .cpp: 只能识别C++ 或者C语言 ...

最新文章

  1. 引子 我想大家应该都很熟悉DNS了,这回在DNS前面加了一个D又变成了什么呢?这个D就是Dynamic(动态),也就是说,按照传统,一个域名所对应的IP地址应该是定死的,而使用了DDNS后,域名所对应
  2. 黄聪:DEDECMS织梦系统共如何添加自定义属性和修改方法
  3. 死磕Java并发:J.U.C之阻塞队列:ArrayBlockingQueue
  4. 如何捕获window.print点击打印或取消_原来1:1的CAD图纸要这样打印!学了这么久才知道...
  5. python读取大文件目录_65.Python读取大文件
  6. 数学知识总结——矩阵
  7. java集合的功能_功能性Java集合
  8. java hive查询,hive查询报错
  9. jsp页面中出现“String cannot be resolved to a type”
  10. java测试步骤_java测试框架的方法
  11. pythonobject转int_在Python中将元组转换为int
  12. java png图片转换成jpg_Java实现将png格式图片转换成jpg格式图片的方法【测试可用】...
  13. jQuery(一个JavaScript库)
  14. win7休眠不断网的设置方法
  15. 以太坊社区开发者大会(EDCON 2020)精彩回顾
  16. 已解决Excel无法打开文件test.xIsx“,因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配。
  17. 计算机整理桌面怎么弄,图文详解如何整理桌面
  18. USB Type-C Configuration Channel (CC)引脚功能介绍
  19. 使用OM-UI快速搭建系统前台框架
  20. android汉字所占内存

热门文章

  1. Java+SSM二手交易商城微信小程序源码【包调试运行】
  2. java下载图片到本地,例如从网上下载图片,下载淘宝图片,下载百度图片等
  3. 使用ansys workbench 的LSDYNA模块研究碰撞的接触设置
  4. JQGrid各种参数详解
  5. ug12在win8计算机名错,Win8安装UG9.0时出错提示“UGII_TMP_DIR 被设为一个有无效(非ASCII)字符的目录”怎么办...
  6. 文件服务器映驱动,IIS虚拟目录实现与文件服务器网络驱动器映射共享
  7. matlab位置跟踪仿真
  8. 打开用友总账时提示“该产品没有安装,无法使用”
  9. 【48期】盘点Netty面试常问考点:什么是 Netty 的零拷贝?
  10. 2023中国眼博会/护眼健康展/济南护眼贴展/山东护眼仪展①