printf的“精度”说明符的类型是什么?

时间:2015-03-30 04:49:03

标签: c++ c printf format-specifiers

假设我使用以下printf()说明符字符串:

printf("%.*s", length, str);

printf()询问length。问题是int有哪种类型?我只在文档中看到整数的简短提及。

所以看起来好像是const char* startOfString = ... const char* middleOfString = ... printf("%.*s", (int)( middleOfString - startOfString ), startOfString); 。然后看起来当字符串很长时我不能使用以下代码:

INT_MAX

看起来我不能以这种方式输出超过int个字符。

那么哪种类型是精度?它是size_t还是{{1}}还是其他什么?

1 个答案:

答案 0 :(得分:4)

这是int,您不能以这种方式打印超过INT_MAX个字符。

根据C标准,§7.21.6.1,第7段。 5:

  

字段宽度或精度或两者都可以用星号表示。在   在这种情况下,int参数提供字段宽度或精度。