为什么printf在C中返回int而不是size_t

Bit*_*tes 7 c printf

不应该返回类型的返回size_t?因为C中对象的大小属于这种类型,包括传递给的字符串printf.

chu*_*ica 9

为什么printf在C中返回一个int?
不应该是类型的size_t

它可能是,但肯定早期的设计决定是容纳负值的返回值EOF以指示错误.

size_t在早期的设计选择中是一种事后的想法.现在在那些标准前的日子intsize_t使用了许多功能.


fprintf()具有环境限制 "任何单次转换可以产生的字符数应至少为4095.",因此任何尝试输出的打印可能会在INT_MAX/SIZE_MAX关注之前遇到该限制.

  • @BiteBytes`printf()`在那些标准前的日子(1970年代 - 1989年)中非常普遍的功能,成为1989年标准创建后的匹配目标.这种创造并没有试图打破现有的可以避免它的做法.`printf()`符合标准,因为它是C89所基于的标准. (2认同)