郝萌主倾心贡献,尊重作者的劳动成果,请勿转载。

如果文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额随意,重在心意^_^ 

我要捐赠: 点击捐赠

Cocos2d-X×××:点我传送

数据类型、 运算符和表达式在任何的计算机语言中都比较重要的, 

在面向对象的Objective-C语言中, 除了常规的基本类型, 还有对象类型等。 

运算符和表达式完全遵守C语言规范。

Objective-C数据类型可以分为:基本数据类型、 对象类型和id类型。 

基本数据类型有: int、 float、 double和char类型。 

对象类型就是类或协议所声明的指针类型, 例如:
NSAutoreleasePool * pool, 其中NSAutoreleasePool是一个类,
NSAutoreleasePool *是它指针类型。 


id类型可以表示任何类型, 也就是说id可存储任何类型的对象。 

一般只是表示对象类型, 不表示基本数据类型,从某种意义上说,它是一般对象类型。

所以刚才的变量pool也可以声明为id pool。

id类型是Objective-C中十分重要的特性,它是多态和动态绑定的基础。

基本数据类型

1、int类型

int类型代表整数, 它的十六进制表示方式: 0xFFED0D, 

在使用 NSLog函数中格式化字符串使用 %i表示十进制的整数, 

%o(字母o) 表示8进制整数, %#x表示十六进制整数。 

NSLog(@"integerVar = %i", integerVar);

整数常量由一个或多个数字的序列组成。

它的取值范围是与设备相关的, 无法一概而论。

也就是要注意设备或机器相关量。即我们通常说的int是32位还是64位取决于CPU的总线宽度。

在Mac OS X中,提供了选择应用程序是在32位还是64位下编译。

在前一种情况下,一个int占用32位;在后一种情况下,一个int占用64位。

2、float类型

声明为float类型的变量可以存储包含小数位的值。

float类型代表单精度浮点数, 要表示float类型浮点数, 可以在数值后面加上f或F, 例如:13.5f。 

float浮点数也可以用科学计数法表示, 例如: 1.7e4。 

NSLog函数中格式化字符串: %f表示浮点数, %e表示科学计数法, %g表示浮点数。 

float floatingVar = 3.141592; NSLog(@"floatingVar = %f", floatingVar);

这里的输出结果为floatingVar =3.141592

这说明实际显示的值是由具体使用的计算机系统决定的。

出现这种不准确值的原因在于,计算机内部使用了特殊的方式表示数字。

同样的不确定性也出现在:在计算机内存中不能精确地表示一些浮点值。

所以,我们在进行float或double的值比较时,一定要考虑这一点。

这也是为什么float值和0相等的比较需要写成下面表达式的原因:

if(x>0.000001&&x<-0.000001)

3、double类型

double类型代表双精度浮点数, 与float类型很相似, 占用的字节空间double类型大体上是float类型的两倍。 

大多数计算机是用 64位表示double类型。

NSLog函数中格式化字符串, 与float的%f、 %e和 %g相同。 
NSLog(@"doubleVar = %e", doubleVar);

4、char类型

char类型代表字符类型,char变量可存储单个字符。将字符放入一对单引号中就能得到字符常量。如:’a‘。

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

如果要表示一些特殊字符, 要使用转义字符“\” 。 

字符常量’\n‘(即换行符)是一个合法的字符常量,尽管它似乎与前面提到的规则矛盾。

NSLog(@"charVar = %c", charVar);

下面举个例子来演示以上类型的使用:

#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; }

数据类型限定词

Obejctive-C中数据类型可以在int、 float、 double和char类
前面加上限定词, 限定词有: long、 long long、 short、
unsigned和signed, 这些限定词从而增强了基本类型。