Object C数据类型
Objective-C 数据类型可以分为:基本数据类型、对象类型和 id 类型。基本数据类型有: int 、 float 、 double 和 char 类型。对象类型就是类或协议所声明的指针类型,例如: NSAutoreleasePool * pool ,其中 NSAutoreleasePool 是一个类, NSAutoreleasePool * 是它指针类型。 id 类型可以表示任何类型,一般只是表示对象类型,不表示基本数据类型,所以刚才的变量 pool 也可以声明为 id pool 。本节中我们重点介绍一下基本数据类型。
1.int 类型
int 类型代表整数,它的十六进制表示方式: 0xFFED0D ,在使用 NSLog 函数中格式化字符串使用 %i 表示十进制的整数, %o (字母 o )表示 8 进制整数, %#x 表示十六进制整数。它的取值范围是与设备相关的,无法一概而论。
2. float 类型
float 类型代表单精度浮点数,要表示 float 类型浮点数,可以在数值后面加上 f 或 F ,例如 :13.5f 。 float 浮点数也可以用科学计数法表示,例如: 1.7e4 。 NSLog 函数中格式化字符串: %f 表示浮点数, %e 表示科学计数法, %g 表示浮点数。
3. double 类型
double 类型代表双精度浮点数,与 float 类型很相似,占用的字节空间 double 类型大体上是 float 类型的两倍。大多数计算机是用 64 位表示 double 类型。 NSLog 函数中格式化字符串,与 float 的 %f 、 %e 和 %g 相同。
4. char 类型
char 类型代表字符类型,存放点个字符,用单引号引用起来。例如: 'A' ,如果要表示一些特殊字符,要使用转义字符“ \ ”。
数据类型实例如“代码清单 2-2 2.3.1-1/2.3.1-1.m ”所示。
【代码清单2-1】 2.3.1-1/2.3.1-1.m
#import
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int integerVar = 100;
float floatingVar = 331.79;
double doubleVar = 8.44e+11;
char charVar = 'W';
NSLog(@"integerVar = %i", integerVar);
NSLog(@"floatingVar = %f", floatingVar);
NSLog(@"doubleVar = %e", doubleVar);
NSLog(@"doubleVar = %g", doubleVar);
NSLog(@"charVar = %c", charVar);
[pool drain];
return 0;
}
输出结果如下:
2011-09-16 10:30:26.921 2.3.1[707:a0f] integerVar = 100
2011-09-16 10:30:26.923 2.3.1[707:a0f] floatingVar = 331.790009
2011-09-16 10:30:26.924 2.3.1[707:a0f] doubleVar = 8.440000e+11
2011-09-16 10:30:26.924 2.3.1[707:a0f] doubleVar = 8.44e+11
2011-09-16 10:30:26.924 2.3.1[707:a0f] charVar = W
Obejctive-C 中数据类型可以在 int 、 float 、 double 和 char 类型前面加上限定词,限定词有: long 、 long long 、 short 、 unsigned 和 signed ,这些限定词从而增强了基本类型。
· long int ,在大部分计算机中代表 32 位整数,在整数后面加 L (或 l )表示,例如: long int numberOfPoints = 131071100L , NSLog 函数中格式化字符串使用 %li 表示;
· long long int 可以指定更加宽泛的整数类型,保证变量至少 64 位宽度。 NSLog 函数中格式化字符串使用 %lli 表示;
· long double ,可以指定更加宽泛的 double 类型,要显示这个可以在尾部使用 L (大小写)表示, 1.234e+7L 。 NSLog 函数中格式化字符串使用 %Lf 、 %Le 和 %Lg 表示;
· short int 用来指定存放相对小的整数,一般是占用 int 类型的一半。大部分计算机是 16 位;
· unsigned int ,告诉编译器只是接受整数,在数值之后放字母 u (或 U )表示,例如: 0x00ffU ;编写整数时候,可以将字母 u (或 U )和 l (或 L )组合起来,例如: 20000UL ;
signed char ,代表的字符与编译器有关,一般也作为无符合整数使用。