【问题标题】:C printf Format Specifier %_fiC printf 格式说明符 %_fi
【发布时间】:2014-11-09 17:10:55
【问题描述】:

有谁知道下划线作为格式说明符(如 %_f)是否在 C 代码中起作用? 我在一本使用它的书中找到了一些代码,但我用谷歌搜索却一无所获。我还在 Xcode 中测试了以下 Objective-C 代码,Xcode 似乎不支持这个说明符。它在 C 中有效吗?

-(void) print {
    printf( "%_f + %_fi", real, imaginary );
}

谢谢!

【问题讨论】:

  • 也许这是为了象征本书的目的的空格字符?
  • 一些编译器显然支持这个以实现双精度的“最佳”显示 - 请参阅 thinkage.ca/english/gcos/expl/c/lib/printf.html
  • 如果 Jens 的建议是真的,那么格式说明符是 % f。请注意尾随 i 不是格式的一部分。
  • 即使是用来表示%和f之间的空格,那个空格又有什么好处呢?

标签: objective-c c printf specifier


【解决方案1】:

OS X man page for printf() 是这样说的:

  • 打印 AltiVec 或 SSE 向量时用于分隔多个值的可选分隔符(, | ; | : | _), 或其他多值单位。

    注意:这是对printf() 规范的扩展。 printf() 的这些值的行为仅定义用于操作 符合 AltiVec 技术编程接口的系统 手动的。 (在撰写本文时,这仅包括 Mac OS X 10.2 和 稍后。)

【讨论】:

  • 我认为情况并非如此,因为我们打印的是双精度数,而不是向量。
  • printf()“在打印 AltiVec 或 SSE 矢量或其他多值单元时”使用分隔符。当不打印这样的多值单元时,大概是不使用它。 “v”长度修饰符的存在与否决定了参数是否被解释为向量值。 (请参阅手册页的下方。)因此,实际上,在这种情况下,下划线没有任何作用。
猜你喜欢
  • 2012-05-17
  • 2012-05-17
  • 1970-01-01
  • 2017-11-16
  • 1970-01-01
  • 1970-01-01
  • 2017-08-04
  • 1970-01-01
  • 2011-03-11
相关资源
最近更新 更多