2.3 显示变量的值

用NSLog不仅能显示简单短语,还能显示变量的值以及计算结果。代码清单2-4使用NSLog例程显示两个数(即50和25)相加的结果。

代码清单2-4


import<Foundation/Foundation.h>

int main(int argc, const char*argv[])

{

NSAutoreleasePool*pool=[[NSAutoreleasePool alloc]init];

int sum;

sum=50+25;

NSLog(@“The sum of 50 and 25 is%i”,sum);

[pool drain];

return 0;

}


代码清单2-4输出


The sum of 50 and 25 is 75


main中自动释放池后面的第一条程序语句将变量sum定义为整型。在应用程序中使用所有程序变量之前,都必须先定义它们。变量的定义向Objective-C编译器说明程序将如何使用这些变量。编译器需要这些信息来生成正确的指令,以便将值存储到变量中或者从变量中检索值。定义成int的变量只能用于存储整型值,就是说,没有小数位的值。整型值的例子有3、5、-20和0。带有小数位的数字,例如2.14、2.455和27.0,称为浮点数,它们是实数。

整型变量sum用于存储两个整数50和25相加的结果。我们故意在这个变量定义的下面留下一个空行,以便在视觉上区分例程的变量定义和程序语句;严格来讲,这是一个风格问题。有时候,在程序中添加单个空白行可使程序的可读性更强。

程序语句


sum=50+25;


在作用上与其他大多数程序设计语言中一样:数字50和数字25相加(如加号所示),并把结果存储(如赋值运算符,或者等号所示)到变量sum中。

现在,代码清单2-4中的NSLog例程调用的圆括号中有两个参数。这些参数用逗号隔开。NSLog例程的第一个参数总是要显示的字符串。然而,在显示字符串的同时,通常还希望要显示某些程序变量的值。在这个例子中,你希望在显示字符之后,还要显示变量sum的值:


The sum of 50 and 25 is


第一个参数中的百分号是一个特殊字符,它可被NSLog函数识别。紧跟在百分号后的字符指定在这种情况下将要显示的值类型。在前一个程序中,字母i被NSLog例程识别,它表示将要显示的是一个整数。

只要NSLog例程在字符串中发现%i字符,它都将自动显示例程第二个参数的值。因为sum是NSLog的下一个参数,所以它的值将在显示字符The sum of 50 and 25 is之后自动显示。

现在,尝试预测代码清单2-5的输出。

代码清单2-5


import<Foundation/Foundation.h>

int main(int argc, const char*argv[])

{

NSAutoreleasePool*pool=[[NSAutoreleasePool alloc]init];

int value1,value2,sum;

value1=50;

value2=25;

sum=value1+value2;

NSLog(@“The sum of%i and%i is%i”,value1,value2,sum);

[pool drain];

return 0;

}


代码清单2-5输出


The sum of 50 and 25 is 75


main中的第二条程序语句定义了3个int变量,分别名为value1、value2和sum。这条语句可以等价地表示成以下3条独立的语句:


int value1;

int value2;

int sum;


定义这3个变量后,程序将50赋值给变量value1,将25赋值给变量value2。然后计算两个变量的和并将结果赋值给变量sum。

现在,NSLog例程的调用包含4个参数。同样,第一个参数通常叫做格式字符串,它向系统描述其余参数的显示方式。value1的值将在The sum of之后立即显示。类似地,value2和sum两者的值将在适当的位置输出,该位置由格式字符串中后两个%i字符指定。