gpt4 book ai didi

c - 用于打印 size_t 值的可移植代码?

转载 作者:行者123 更新时间:2023-11-30 17:14:13 25 4
gpt4 key购买 nike

我正在使用一段 C 代码,如下所示

char buf[16];
size_t i = 6;

sprintf(buf, "%d", i);

...当函数需要“int”时,编译器会警告我第三个参数的类型为“size_t”。

所以我尝试告诉它它将获得一个无符号整数

sprintf(buf, "%u", i);

现在,当函数需要“unsigned int”时,编译器会警告我第三个参数的类型为“size_t”。

<小时/>

根据我在有关此问题的其他问题/答案中读到的内容,我不能假设 size_t 是一个 unsigned int,这解释了警告。

  • 那么我怎样才能重写该行以使编译器满意(即编译器保持沉默)?
<小时/>

编辑:

在有人提出建议之前,我正在寻找一种解决方案,该解决方案实际上可以解决出现问题的轻微可能性。因此,通过强制类型转换

sprintf(buf, "%d", (int)i);

sprintf(buf, "%u", (unsigned int)i);

这是不可取的。

最佳答案

C99 和 C11 需要 z 修饰符:

sprintf(buf, "%zu", i);

如果 MS Visual Studio 也必须适应,那么生活可能会更困难(因为它不遵守 C99 或 C11 标准)。根据MSDN ,您需要使用 I 而不是 z

关于c - 用于打印 size_t 值的可移植代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30429519/

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