【问题标题】:printf/fprintf maximum size according to c99根据 c99 的 printf/fprintf 最大尺寸
【发布时间】:2011-12-28 12:39:29
【问题描述】:

C99 standard 说:

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

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

【问题讨论】:

  • 这是可以产生的最小数量,所以它是最小最大值。

标签: c printf c99


【解决方案1】:

“至少”是指最小值,而不是最大值。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      您发现了 C 语言规范中比较烦人的方面之一。他们通常不会说最大值是多少。相反,他们通常会说允许的最大值是什么。

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

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

      这里也是同样的故事——他们希望程序员能够使用适当大小的转换,但认识到某些平台可能无法处理 巨大 的转换——因此他们制定了一个尺寸足够大,大多数程序员永远不会知道这个限制,但也足够小,以至于一些实现只能做最小值并且仍然是合规的。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-04-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多