Printf() - 打印字符限制

Jak*_*ake 6 c c++ printf

我试图找到printf()C标准中要打印的字符数的允许限制.我只在讨论论坛中找到答案,这表明INT_MAX.

例如,我检查了以下内容:

#include <stdio.h>

// INT_MAX  2147483647

int main()
{
    int x=3;

    int y = printf("%2147483647d \n\n", x); --> Confirms INT_MAX ?

    // If I change the above to 2147483648, y in set to -1
    printf("y = %d\n\n", y);

    return 0;
} 
Run Code Online (Sandbox Code Playgroud)

我想问为什么printf()受限制INT_MAX?任何人都可以指出C标准推理或源代码参考?

编辑

我找到的最接近的答案是fprintf().在此链接上,在页568上,提到了它(在未定义的行为下):

The number of characters or wide characters transmitted by a formatted output
function (or written to an array, or that would have been written to an array) is 
greater than INT_MAX.
Run Code Online (Sandbox Code Playgroud)

以上是否也可以证明printf()这一点?

Mag*_*sch 1

好吧,如果您使用表示整数的格式说明符 %d 进行打印,那么您的最大可打印数字当然是 INT_MAX。但你的例子是错误的。您试图告诉它在数字上打印 INT_MAX 数字,但这当然远远超出了实际数值 INT_MAX。

至于为什么你的例子失败了,我想 printf() 将要打印的位数存储在整数本身中。