我试图找到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()这一点?
好吧,如果您使用表示整数的格式说明符 %d 进行打印,那么您的最大可打印数字当然是 INT_MAX。但你的例子是错误的。您试图告诉它在数字上打印 INT_MAX 数字,但这当然远远超出了实际数值 INT_MAX。
至于为什么你的例子失败了,我想 printf() 将要打印的位数存储在整数本身中。
| 归档时间: |
|
| 查看次数: |
828 次 |
| 最近记录: |