Format specifiers 样式申明

在前面几章里,我们已经接触过了代表「对象内容」的 "%@ ",代表「整数」的 "%d" ,和代表「打印对象指针」的 "%p" ,除此之外,还有另外一些样式符号。这里最重要的就是 "%f" 和 "%ld" , "%f" 的意思是「打印一个浮点数」,而 "%ld" 意思是「打印一个长整型」。

我们先来介绍 "%f" 。这个符号在你想用自定义数据表达形式的时候非常有用,比如 "%.2f" ,就表示了「打印一个浮点数,取到小数点后两位」。下面的这行代码,它的输出结果就是 3.14。

NSLog(@"%.2f", M_PI);

M_PI 是在宏里面定义的一个常量。

#define M_PI 3.14159265358979323846264338327950288

当预处理器看到它的时候,它已经自动地用 3.14,代替了这一长串数字。

接着来看这个 "%ld",它打印出来的是一个长整型的值。在之前的章节里,我已经解释了 NSInteger 的值取决与CPU的类型,这就会有一些问题。"%d" 是打印 int 用的,在 64 位的 CPU 上使用这个符号会报错。那最方便的解决方法就是用 "%ld" 来代替,然后把这个 int 强制类型转换为 long,就像这样:

NSInteger i = 10;
NSLog(@"%ld", (long)i);

不用担心记不住这个,因为如果你像下面这样写代码的话,Xcode 会自动提示这是有问题的,然后帮你修复它。

// incorrectly try to use an NSInteger with %d
NSInteger i = 10;
NSLog(@"%d", i);

results matching ""

    No results matching ""