数据类型
在Objective-C编程语言中,数据类型是指一个广泛的系统,用于不同类型的声明变量或函数。其类型可分类如表2.1所示:
类型 | 类型说明 |
---|---|
基本类型 | 称为算术类型:字符类型、整数类型、浮点类型(单精度型/双精度型) |
枚举类型 | 也是算术类型:被用来定义变量只能被分配在整个程序中的若干离散的整数值 |
void类型 | 类型说明符void表示没有可用的值 |
派生类型 | 指针类型、数组类型、结构类型、联合类型、函数类型 |
在 Objective-C 中,提供的基本数据类型(算术类型)有char、int、float、double四种。
此外,Objective-C还提供了几种限定词short、signed、unsigned、long及long long。
基本数据类型可以与限定词配合使用,如果直接把限定词long放在int声明之前,那么声明的整型变量在某些计算机上具有扩展的值域,而且此变量的具体范围也是由具体的计算机系统决定的。
表2.2总结了基本数据类型和限定词:
类型 | 实例 | NSLog字符 |
---|---|---|
char | 'a'、'\n' | %c |
short int | — | %hi、%hx、%ho |
unsigned short int | — | %hu、%hx、%ho |
int | 12、-97、0xFFE0、0177 | %i、%x、%o |
unsigned int | 12u、100U、0xFFu | %u、%x、%o |
long int | 12l、-200L、0xffffL | %li、%lx、%lo |
unsigned long int | 12ul、100UL、0xffeeUL | %lu、%lx、%lo |
long long int | 0x5e5e5LL、500ll | %lli、%llx、%llo |
unsigned long long int | 12ull、0xffeeULL | %llu、%llx、%llo |
float | 12.34f、3.1e-5f、0x1.5p10、0x1P-1 | %f、%e、%g、%a |
double | 12.34、3.1e-5、0x.1p3 | %f、%e、%g、%a |
long double | 12.34L、3.1e-5l | %Lf、%Le、%Lg |
id | nil | %p |
注意:在表2.2中,在整形常量中以0开头表示常量是八进制(基数8)的,以0x开头或0X表示它是十六进制(基数16)的,数字0x.1p3表示十六进制浮点常量。不必担心这些格式,这里只是为了使表格完整进行的总结。此外,前缀f、l(L)、u(U)和ll(LL)用来明确表示常量是float、long、unsigned和long long类型。
类型转换
1.自动类型转换
*把整型类型(包括字符型)的变量赋给浮点型变量,不会有太大的变化。
*把浮点型类型的变量和值赋给整型(包括字符型)变量,数值的小数部分会被直接舍弃。
*当把取值范围大的变量和值赋给取值范围小的变量时,可能发生溢出
2.强制性类型转换
强制性类型转换的运算符是圆括号(()),例如:int a = 100; int b = 3; float f = (float) a / b;
3.表达式类型的自助提升