C99标准下printf/fprintf的最大输出大小

4

C99 标准 表示:

任何单个转换所能生成的字符数至少为 4095。

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


1
这是可能产生的最小数字,因此它是最小的最大值。 - Fred Foo
4个回答

9
您发现了C语言规范中比较烦人的一面。它们通常不会说最大值是多少,而是通常会说明“最大允许值的最小值”是什么。
他们认识到不同的硬件/编译器/链接器环境有不同的限制,因此他们把大部分限制留给了各个工具的作者。但是,他们希望在不同的环境之间提供一定程度的可移植性,因此他们指定了“最大值”可以达到的“最小值”。
这就是我们得到的限制,例如只有前8个字符的标识符在消除歧义时被考虑在内 - 他们不想强迫任何实现者处理更长的标识符,因此他们说“最小的最大长度”是8。
这里也是同样的情况 - 他们希望程序员能够使用足够大的转换,但是也认识到有些平台可能无法处理巨大的转换 - 因此他们设定了一个足够大以使大多数程序员永远不需要知道极限的大小,但同时又足够小以使一些实现仅执行最小的操作并仍然符合规范。

2

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


0
"

至少

" 的意思是最少,不是最多。
实现必须支持至少这么多,但可以支持更多。

0
C语言标准没有指定一个最大值。它们指定的是允许最大值的最小值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接