我们在嵌入式平台上使用C89。我试图打印出一个size_t,但没有成功:

#include <stdio.h>
int main(void) {
    size_t n = 123;
    printf("%zu\n",n);
    return 0;
}

我得到了123,而不是zu。
其他说明符工作正常。
如果存在,也不能在size_t中可用吗?
这是我应该联系我的库供应商,还是允许库实现排除它?

最佳答案

如果SigeZiT存在,ZU是否也可以在PrTNF中使用?
size_t至少存在于C89,但仅在C99之后才将相应的格式说明符%zu(特别是长度修饰符z)添加到标准中。
因此,如果不能使用C99(或C11),而必须在C89中打印size_t,则必须退回到其他现有类型,例如:

printf("%lu\n", (unsigned long)n);

关于c - printf是否需要%zu指定符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41263896/

10-13 05:20