我们在嵌入式平台上使用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/