gpt4 book ai didi

c++ - Printf() - 打印字符限制

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:42:58 28 4
gpt4 key购买 nike

我正在尝试查找 C 标准中 printf() 打印的字符数的允许限制是多少。我只找到了 answer在论坛中,表示 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;
}

我想问一下为什么 printf() 受限于 INT_MAX ?谁能指出 C 标准推理或源代码引用?

编辑

我找到的最接近的答案是 fprintf()。在这link ,在第 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.

以上是否也适用于 printf()

最佳答案

printf 声明返回打印的字符数或 -1 以防出现错误。它的返回类型是int。您可以存储的最大数量是 intINT_MAX

如果您尝试打印更多字符会怎样?然后 printf 无法履行其契约(Contract):返回写入的字符数。标准没有说明当契约(Contract)无法履行时该怎么做,所以这种情况下的行为是未定义的,因为没有在标准中定义。

关于c++ - Printf() - 打印字符限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36931735/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com