printf/fprintf根据c99的最大尺寸

4 c printf c99

C99 标准说:

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

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

sar*_*old 9

你已经发现了C语言规范中比较讨厌的一个方面.他们通常不会说什么是最大值.相反,他们通常会说出最大允许值是多少.

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

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

这是同样的故事 - 他们希望程序员能够使用体面的转换,但是认识到某些平台可能无法处理大量转换 - 因此他们设置了足够大的尺寸,以便大多数程序员永远不会知道限制,但足够小,一些实现只能做到最小,仍然是合规的.