数据类型和表达式
在这一节中我们将介绍一些objective-c中的基本数据类型,和表达式的规则。
你可能会想到int类型,它是objective-c中的用来存放数字的基本数据类型,只能用来存放整形数值。
objective-c提供了其他三种基本的数据类型:浮点型(float),双精度(double),字符型(char)。同其他语言类似,浮点型用来存放带小数位的数值,double型与float类似只是精确度更高。字符型(char)用来存放单个字符如: a 、 A 、 6、 等等。
在objective-c中,数字,单个字符,或者字符串都被称作a constant(常量)。如:数字 58代表 常量数值。字符串“Programming in Objective-c is fun.\n”是一个字符串的常量例子。所以这种由常量组成的表达式叫做常量表达式如:128+7-17
但是如果在这里定义了一个int型的变量i,这个表达式就不是常量表达式了:128+7-i
下面以例子做讲解:
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;
}
输出结果为
看输出结果的第二行,注意331.79变成了331.79009关于这个问题。我又受教了一次,原文中写的比较含糊,只是简单的说了下浮点型大多都是近似值,并不能精确的表示数字,还以计算器中1除以3的结果为例子。在数学中1除以3的结果应该是0.3333333……后面无数个3,而由于计算机是有精度限制的因此只能取近似值。讲的比较详细的参见这篇博文深入浅出浮点数。
不过我基础知识太差还是不明白为什么得出的结果是331.790009 保留6为位小数,且最后一位总是9 。希望路过的高手不吝赐教。先谢谢了。
修饰符:long,long long,short,unsigned,and signed
如果long修饰符被加在一个int类型的变量前面,说明这个变量在计算机中的内存范围增大了。举个例子如: long int factorial;
在这里定义了一个长整形的变量。对于float和doubles型的数据,他们的精确度取决于你的计算机系统。在多数系统中,一个整形(int)与一个长整形(long int)拥有相同的精度范围,最多可以存储32bits(位)。
一个常量的长整形表示方法为在数字后面紧接着加上一个字母(L)如: 13107100 的长整形表示法为 long int numberofPoints=13107100L
long long 整形的可以这样表示,long long int maxAlloweStorage
long修饰符同样被允许加在double型的前面,比如:long double US_deficit_2004
待续。