【发布时间】:2014-10-13 21:32:36
【问题描述】:
我正在阅读一本关于 Objective-C 的书,结果如下:
NSLog(@"%-2i %i", n1, n2);
%-2i 是什么意思,它只是像 %i 一样打印出数字?
谢谢。
【问题讨论】:
-
你看过 NSLog 的文档了吗?
标签: objective-c
我正在阅读一本关于 Objective-C 的书,结果如下:
NSLog(@"%-2i %i", n1, n2);
%-2i 是什么意思,它只是像 %i 一样打印出数字?
谢谢。
【问题讨论】:
标签: objective-c
NSLog() 和[NSString stringWithFormat:] 使用printf(3) 格式化规则并来自printf manpage:
负字段宽度标志;转换后的值将被保留 在场边界上调整。除了 n 次转换, 转换后的值用空格填充在右侧,而不是在 留下空白或零。 A - 如果两者都给出,则覆盖 0。
所以它使用 2 个左对齐的空格打印整数。
【讨论】:
我相信它将第一个整数左对齐为 2 个字符,更好的答案在这里:
【讨论】:
这类问题通常不受欢迎,因为在文档中查找很简单,但让我添加相关链接:
在 google 上搜索 NSlog 可以让我们看到苹果文档的这个页面:https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/Reference/reference.html
它告诉我们一些关于“格式化字符串”和@"format" 的信息(遗憾的是没有直接链接)。
但是,当您将其插入顶部的搜索栏中时,您最终会到达https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFStrings/formatSpecifiers.html。同样,它没有列出 %i,而是告诉您查看 IEEE fprintf 文档:http://pubs.opengroup.org/onlinepubs/009695399/functions/printf.html。
最后,您可以找到%i 和-2i 的定义:
负字段宽度被视为“-”标志,后跟正字段宽度。取负精度,就好像省略了精度一样
【讨论】: