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

mac2024-03-28  32

文章目录

2.数据类型与表达式2.1数据类型与常量2.1.1基本数据类型1. int类型2. float类型3. char 类型4. BOOL类型 2.1.2限定词1. long2. long long3. short4. unsigned5. signed 2.1.3 id与instancetype1. 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语句。

最新回复(0)