【问题标题】:Objective-C: What is %-2i in NSLog?Objective-C:NSLog 中的 %-2i 是什么?
【发布时间】:2014-10-13 21:32:36
【问题描述】:

我正在阅读一本关于 Objective-C 的书,结果如下:

NSLog(@"%-2i %i", n1, n2);

%-2i 是什么意思,它只是像 %i 一样打印出数字?

谢谢。

【问题讨论】:

  • 你看过 NSLog 的文档了吗?

标签: objective-c


【解决方案1】:

NSLog()[NSString stringWithFormat:] 使用printf(3) 格式化规则并来自printf manpage

负字段宽度标志;转换后的值将被保留 在场边界上调整。除了 n 次转换, 转换后的值用空格填充在右侧,而不是在 留下空白或零。 A - 如果两者都给出,则覆盖 0。

所以它使用 2 个左对齐的空格打印整数。

【讨论】:

    【解决方案2】:

    我相信它将第一个整数左对齐为 2 个字符,更好的答案在这里:

    objective-c code to right pad a NSString?

    【讨论】:

      【解决方案3】:

      这类问题通常不受欢迎,因为在文档中查找很简单,但让我添加相关链接:

      在 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 的定义:

      负字段宽度被视为“-”标志,后跟正字段宽度。取负精度,就好像省略了精度一样

      【讨论】:

      • 抱歉,我不知道要查找什么,但感谢您提供的链接,我真的很感激。
      猜你喜欢
      • 1970-01-01
      • 2011-05-28
      • 2010-11-15
      • 2020-12-24
      • 2010-12-07
      • 2012-03-18
      • 1970-01-01
      • 1970-01-01
      • 2011-03-23
      相关资源
      最近更新 更多