Objective C中的数据类型 Objective C 中的面向对象 Objective C中的运算符 Objective C中的数据类型 内容概述 整型 浮点型 字符型 布尔型 整型修饰符 short long signed unsigned 特殊类型 id 5.1 整型 整型是一个或多个数字序列,有正负之分。可以表示为8进制和16进制,八进制前面加0,16进制前面加0x。 整型的长度根据不同的机器有所不同,一般是32位,可以使用sizeof函数测试整型的长度。 有使用我们可以使用NSInteger表示长整型,使用NSUInteger表示无符号长整型。 typedef long NSInteger; typedef unsigned long NSUInteger; 下面是一些整型的定义及NSLog输出格式: #import \<Foundation/Foundation.h\> int main(int argc, const char \* argv[]) { @autoreleasepool { // 有符号整型 int test1 = -100; NSLog(@"%d",test1); // 无符号整型 unsigned int test2 = 200; NSLog(@"%u",test2); // 8进制整型 int test3 = 0123; NSLog(@"%o",test3); // 16进制整型 int test4 = 0x127ff; NSLog(@"%x",test4); int test5 = 0xffff; NSLog(@"%x",test5); // 测试整型长度 int size = sizeof(test1); NSLog(@"size=%d",size); //NSInteger 表示长整型 NSInteger i = 1234; NSLog(@"%ld",i); // NSUInteger 表示无符号长整型 NSUInteger j = 5678; NSLog(@"%lu",j); } return 0; } 上述代码的输出结果为: 2013-03-02 10:47:01.313 chapter05[395:303] -100 2013-03-02 10:47:01.314 chapter05[395:303] 200 2013-03-02 10:47:01.315 chapter05[395:303] 123 2013-03-02 10:47:01.315 chapter05[395:303] 127ff 2013-03-02 10:47:01.315 chapter05[395:303] ffff 2013-03-02 10:47:01.315 chapter05[395:303] size=4 2013-03-02 10:47:01.316 chapter05[395:303] 1234 2013-03-02 10:47:01.316 chapter05[395:303] 5678 5.2 浮点类型 浮点类型是带有小数点的数据类型,浮点类型可以分为单精度float类型和双精度double类型。一般双精度类型的长度是单精度的两倍,表示的数据更精确。 浮点类型可以省略小数点前或后面的数字,例如 .123 或者 123 NSLog输出使用%f,可以使用科学计数法表示,例如:1.8e4 等价于1.8乘以10的4次方。 下面是一些有关浮点类型的定义和NSLog输出。 #import \<Foundation/Foundation.h\> int main(int argc, const char \* argv[]) { @autoreleasepool { // float 类型 float pi = 3.14; NSLog(@"pi=%f",pi); // float 类型的长度 int size = sizeof(pi); NSLog(@"size=%d",size); // double类型 double d = 3.14159; NSLog(@"d=%f",d); // double类型的长度 size = sizeof(d); NSLog(@"size=%d",size); // 科学计数法表示 double test = 0.31e2; NSLog(@"test=%f",test); } return 0; } 上述代码的输出结果为: 2013-03-02 11:06:17.966 chapter05-02[515:303] pi=3.140000 2013-03-02 11:06:17.967 chapter05-02[515:303] size=4 2013-03-02 11:06:17.968 chapter05-02[515:303] d=3.141590 2013-03-02 11:06:17.968 chapter05-02[515:303] size=8 2013-03-02 11:06:17.968 chapter05-02[515:303] test=31.000000 5.3 字符型char 字符型char表示一个单个字符,使用单引号括起来,例如,char c = 'A' char c1 = '*' char c2 ='\n'。NSLog输出格式为 %c。下面表列出了常用的转义字符: 表1.1 转义字符 转义字符 表达意义 \a 声音警告 \b 退格 \n 换行 \r 回车 \t 水平制表符 \v 垂直制表符 \ 反斜杠 \" 双引号 \' 单引号 另外,char类型和int类型可以相互转换。下面是一些char类型的定义和NSLog的输出。 #import \<Foundation/Foundation.h\> int main(int argc, const char \* argv[]) { @autoreleasepool { // char类型 char c = 'A'; NSLog(@"%c",c); // int类型和char类型可以相互转换 int i = c; NSLog(@"i=%d",i); // 转义字符 char x = '\r'; NSLog(@"Hello%cWorld",x); } return 0; } 5.4 布尔类型 在Objective C中的布尔类型其实是无符号char的1和0,typedef signed char BOOL;使用BOOL来定义,一般赋值为YES或NO。下面是YES和NO的定义。 #define YES (BOOL)1 #define NO (BOOL)0 下面是布尔类型的定义和输出。 #import \<Foundation/Foundation.h\> int main(int argc, const char \* argv[]) { @autoreleasepool { // 布尔类型 BOOL isLoop = YES; NSLog(@"isLoop=%d",isLoop); isLoop = NO; NSLog(@"isLoop=%d",isLoop); } return 0; } 上述代码的输出结果为: 2013-03-02 11:38:04.474 chapter05-04[662:303] isLoop=1 2013-03-02 11:38:04.475 chapter05-04[662:303] isLoop=0 5.5 整型修饰符 short long signed unsigned 一般人们会认为short、long等是一种数据类型,其实这是错误的。short、long、singed和unsigned都是整型的修饰类型。例如short int 表示短整型,一般简写为short,long int表示长整型一般简写为long。而signed表示有符号整型,unsigned表示无符号整形。换句话说,long 和 short 是扩大或缩小数值范围,unsigned和signed是有无符号。 如下代码等价: #import \<Foundation/Foundation.h\> int main(int argc, const char \* argv[]) { @autoreleasepool { // 长整型 long int test1 = 1; // 缩写 long test2 = 1; int size = sizeof(test2); NSLog(@"size=%d",size); // 无符号整型 unsigned int test3= 1; // 缩写 int test4 = 1; // 短整型 short int test5 = 1; // 缩写 short test6 = 1; size = sizeof(test6); NSLog(@"size=%d",size); } return 0; } 上述代码的输入结果是: 2013-03-02 11:51:44.683 chapter05-05[702:303] size=8 2013-03-02 11:51:44.685 chapter05-05[702:303] size=2 5.6 特殊类型 id 在Objective C面向对象的概念中,id类型可以表示任意的对象类型。也就是说我们可以将任何的对象赋值给id类型。一般当某个方法无法明确返回值类型时,我们可以指定返回id类型,例如,NSObject的初始化方法init。下面是一下id类型的声明方法。 #import \<Foundation/Foundation.h\> int main(int argc, const char \* argv[]) { @autoreleasepool { // 实例化NSObject对象赋值给id类型 id obj = [[NSObject alloc]init]; // 实例化数组赋值给id类型 id array = [[NSArray alloc]init]; // 字符串赋值给id类型 id str = @"Hello World"; // NSObject init 方法的定义 // - (id)init; } return 0; } Objective C 中的面向对象 Objective C中的运算符