objective-c的基本类型和Java中一致。

objective-c的数据类型如下:

type
type

NSLog是打印函数,相当于c语言的printf(),或者Java里面的system.out.print()。

formate
formate

int类型

和Java一样,objc的八进制表示:如果整形值的第一位是0,那么这个整数将用八进制计数法来表示,就是说用基数8来表示。在这种情况下,该值的其余位必须是合法的八进制数字,也就是必须是0到7之间的数字。因此,在objc中以八进制表示的值50(等价于十进制40),表示方式为050。与此类似,八进制的常量0177表示十进制的值127(1x64+7x8+7)。通过在NSLog调用的格式字符串中使用格式符号%o,可在终端上用八进制显示整形值。这种情况下显示的八进制值不带前导0,如果像显示0,可以用格式符号%#o。

关于十六进制的表示,通过0x开头。比如0xFFEF0D。格式输出符号是%x将用十六进制格式显示一个值,该值不带前导0x。如果要显示0x,需要用%#x。如果用%X或者%#X,注意X是大写,可用于十六进制中字母的大写输出。

float类型

声明为float类型的变量可存储包含小数位的值。要区分浮点常量,可通过产看其是否包含小数点。可以省略小数点前面或者后面的数字。值3.、125.8、以及-.0001都是合法的浮点常量。要显示浮点值,可用NSLog转换字符%f。

浮点常量也能使用科学计数法来表示。比如1.7e4,2.25e-3。e字母可用大小写。

要用科学计数法显示值,可以用格式输出符号%e。另外%g可以让NSLog自己确定使用浮点计数法还是科学计数法来显示值。具体怎么显示取决于值的大小。

double类型

类型double于float非常相似,而在float变量所提供的值域不能满足要求时,就要使用double变量。声明为double类型的变量可存储的位数大概是float变量所存储的两倍多。大多数计算机使用64位来便是double值。

除非另有说明,否则,objc编译器将所有的浮点常量均看作double值。要清楚地表示float常量,需要在数字的尾部添加一个f或者F,例如12.5f

要显示double值,可用格式符号%f,%e或者%g,他们与显示float值所用的格式符号是相同的。

char类型

char变量可存储单个字符。将字符放入一对单引号中就能得到字符常量,因此,‘a’,’;‘和'0’都是合法的字符常量。

不要把字符常量和字符串混为一谈,字符常量是放在单引号中的单个字符,而字符串则是放在双引号的任意个数的字符。

字符常量’\n’(换行符)是一个合法的字符常量,将官它似乎与前面提到规则矛盾。出现这种情况的原因是反斜杠符号是objc系统中的特殊符号,实际上并不把它看成一个字符。换句话说,objc编译器将字符’\n’看作单个字符,尽管它实际上由两个字符组成。

我们总结下前面的数据类型,如下代码

#import <Foundation/Foundation.h>

int main(int argc,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;
}

输出结果是:

integerVar=100
floatingVar=331.790009
doubleVar=8.440000e+11
doubleVar=8.44e+11
charVar='w'

在程序输出的第二行,你会注意到指派给floatingVar的值331.79,实际显示成了331.790009。事实上,实际显示的值是由使用的特定计算机系统决定的。出现这种不准确值的原因是:计算机内部使用特殊的方式表示数字。使用计算器处理数字时,很可能遇到相同的不准确性。如果用计算器计算1除以3,将得到结果.33333333,很可能结尾带有一些附加的3.这串3是计算器计算1/3的近似值。理论上,应该存在无限个3。然而计算器只能保存这些位的数字,这就是计算机的不确定性。

在计算机内存中不能精确地表示一些浮点值。