printf / fprintf根据c99的最大尺寸

时间:2011-11-14 10:02:18

标签: c printf c99

C99 standard说:

  

任何单次转化可以产生的字符数   应至少为4095

这是否意味着最大尺寸是4095,如果是,为什么它说“至少”?

4 个答案:

答案 0 :(得分:9)

您已经找到了C语言规范中较烦人的一个方面。他们通常不会说什么是最大值。相反,他们通常会说最大允许值是什么。

他们认识到不同的硬件/编译器/链接器环境有不同的限制,因此他们将大部分限制留给了各个工具作者。但是,他们希望在环境之间提供一些的可移植性,因此他们指定最大可以采用的最低值。

这就是我们如何得到限制,例如在消除符号歧义时只考虑标识符的前8个字符 - 他们不想强迫任何实现者处理更长的标识符,因此他们说“最小最大”长度是8。

这是同样的故事 - 他们希望程序员能够使用体面的转换,但是认识到某些平台可能无法处理巨大的转换 - 所以他们放置了一个大小足以让大多数程序员永远不知道限制,但足够小,以至于某些实现只能做到最小并且仍然是合规的。

答案 1 :(得分:2)

实现编译器必须允许至少4095个字符,但允许更多。

答案 2 :(得分:0)

“至少”意味着它是最小值,而不是最大值。

实现必须支持至少那么多,但可以支持更多。

答案 3 :(得分:0)

C标准未指定最大值。他们所指定的是允许最大值的最小值。