gpt4 book ai didi

c - 打印尺寸_t : format '%lu' expects argument of type 'long unsigned int'

转载 作者:太空宇宙 更新时间:2023-11-04 02:56:06 24 4
gpt4 key购买 nike

我尝试通过强制转换为 unsigned long 来打印 size_t(如“C 编程现代方法”一书中所建议的那样),如下所示:

printf("size:%lu, bsize:%lu", (unsigned long)size, (unsigned long)bsize);
printf("size:%lu, bsize:%lu", ((unsigned long)size), ((unsigned long)bsize));

第一行会给我警告(gcc):

警告:格式“%lu”需要类型为“long unsigned int”的参数,但参数 2 的类型为“size_t”[-Wformat]

第一行和第二行有什么区别?我所做的只是添加了额外的括号,这到底有什么作用?

我知道我可以使用“%z”,但这个问题困扰着我。

最佳答案

假设周围没有丑陋的#define

printf("size:%lu, bsize:%lu", (unsigned long)size, (unsigned long)bsize);

printf("size:%lu, bsize:%lu", ((unsigned long)size), ((unsigned long)bsize));

是等价的。

因此它们将导致相同的代码/警告/错误。

如果他们不这样做,说明有东西坏了。

关于c - 打印尺寸_t : format '%lu' expects argument of type 'long unsigned int' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17132725/

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