gpt4 book ai didi

c - 在 C (C89) 中使用 printf 打印 BUFSIZ 宏常量时使用什么说明符

转载 作者:太空宇宙 更新时间:2023-11-04 05:34:28 25 4
gpt4 key购买 nike

我们是否使用 luunsigned long 强制转换,如:

printf("%lu\n", (unsigned long)BUFSIZ); /* 512 */

希望最好的?还是有别的办法?

这不是以下内容的副本:How can one print a size_t variable portably using the printf family?只是因为我不知道 BUFSIZ 类型是什么。

最佳答案

我假设 BUFSIZ 始终是适合 size_t 的值,并且没有其他保证。

在那种情况下:是的,如果您限于 ,这是最正确的方法.缺少适合 size_t 的格式长度修饰符是这个非常古老的标准的众多缺点之一。实际上,如果您使用的是 LLP64 数据模型(即 Win64)的 64 位系统,size_t 确实大于 long 并且此代码可以在大尺寸时中断。感谢 EOF 的提示。仍然在实践中:它可能应该被合理地定义并且 I/O 缓冲区大小 4G​​ 或更大的听起来不合理,所以它确实是 em> 不太可能遇到“转换为 unsigned long”方法的问题。

附加说明:即使使用 中的编译器,也可能有正当理由使用此构造或 模式,也就是对windows平台的可移植性。 Microsoft 的 msvcrt(C 运行时和标准库)不支持 z 长度修饰符。

关于c - 在 C (C89) 中使用 printf 打印 BUFSIZ 宏常量时使用什么说明符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44293037/

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