在
Objective-C里有如下几个限定词需要了解:long,long long, short,unsigned,signed
long
如果直接把限定词long放在int声明之前,那么所声明的整型变量在某些计算机上具有扩展的值域。一个long int声明的例子为:
long int factorial;
这条语句将变量factorial声明为long的整型变量,也就是长整型。就象float和double变量一样,long变量的具体精度是由具体的计算机系统决定的。在许多系统上,int与long int具有相同的值域,而且任何一个都能存储4个字节(1个字节8位),32位宽(2,147,483,647)的整型值。long在限定整型的时候,实际相当于双精度的short,什么是short? Mike后面会谈。
long int类型的常量值可通过在整型常量末尾添加字母L(大小写均可)来形成。单数字和L之间不允许由空格。因为小写的L和数字1容易混淆,建议有用到这种情况,都用大写。下面是个简单的例子:
long int numberOfPoints = 131071100L;
将变量numberOfPoints声明为长整型,而且初值为131,071,100。
要用NSLog显示long int的值,使用字母l做为修饰符并放在整型格式符号i,o和x之前。例如“%lx”表示十六进制格式显示值。
当然,我们同样可以把 long 标识符放在double声明之前。范例如下:
long double US_deficit_2004;
long double常量可写成其尾部带有字母l或L的浮点常量,例如:1.234e+7L
要显示long double的值,需要使用修饰符L。因此,%Lf用浮点计数法显示long double的值,%Le用科学计数法显示同样的值,而%Lg将告诉NSLog在%Lf和%Le之间任选一个使用。
long long
双长整型相当于双精度long,可以用如下形式使用:
long long int maxAllowedStorage;
这条语句把指定的变量声明为具有特定扩展精度的双长整型变量,该扩展精度保证变量至少8个字节,具有64位的宽度。NSLog字符串不使用单个字母l,而使用两个l来显示long long的整数,例如“%lli”。
short
把限定词short放在int声明之前时,它告诉Objective-C编译器要声明的特定变量用来存储相当小的整数。之所以使用short变量,主要原因是对节约内存空间的考虑,当程序员需要大量内存而可用的内存量又十分有限时,比如iPhone开发的时候,就可用short变量来解决这个问题。
在某些计算机上,short int占用的内存空间是常规int变量所占空间的一半。在任何情况下,确保分配给short int的空间数量不少于2个字节,16位。
注意,在Objective-C中,没有其他方法可显式地编写short int型常量。要显示short int变量,可将字母h放在任何普通的整型转换符之前,如:%hi,%ho或%hx。换句话说,可用任何整型转换符号来显示short int,因为当它作为参数传递给NSLog例程时,可转换成整数。
unsigned
顾名思义,这个最终限定词就是无符号,可放在int变量之前,当整数变量只用来存储正数的情况下使用最终限定符。以下语句
unsigned int counter;
向编译器声明:变量counter只用来保存正值。通过限制整型变量的使用,使它专门存储正整数,可以扩展整型变量的精度。一般unsigned int可简写为uint。
通过将字母u(或U)放在常量之后,可产生unsigned int常量,例如:0x00ffu
编写整型常量时,可将字母u(或U)和l(或L)组合起来使用,例如30000UL,告诉编译器将常量20000看作unsigned long。
简写
将变量声明为long int,short int或unsigned int类型时,关键字int 可以省略。因此unsigned变量counter可等价地声明为以下形式:
unsigned counter;
同时可将char变量声明为unsigned。
signed
signed限定词可明确地告诉编译器特定变量是有符号的。它主要用在char声明前面,这个就比较复杂,此处按下不表。