我们在嵌入式平台上使用C89。我试图打印出size_t
,但它不起作用:
#include <stdio.h>
int main(void) {
size_t n = 123;
printf("%zu\n",n);
return 0;
}
而不是123
,我得到了zu
其他说明符正常工作。
如果size_t
存在zu
,printf
也不能提供json
吗?
这是我应该联系我的图书馆供应商的事情,还是允许排除它的图书馆实施?
答案 0 :(得分:11)
如果size_t存在,那么printf中是否也不能使用zu?
size_t
至少从C89开始存在,但相应的格式说明符%zu
(特别是长度修饰符z
)仅在C99之后才被添加到标准中。
因此,如果你不能使用C99(或C11)并且必须在C89中打印size_t
,你只需要回退到其他现有类型,例如:
printf("%lu\n", (unsigned long)n);
答案 1 :(得分:-1)
这很好用。在我的系统中,它正在打印预期值。 由于编译器,您可能会收到错误。我正在使用 GCC 编译器。如果你只有这个,并试图获得输出第一次更新GCC,然后尝试。它会起作用。
答案 2 :(得分:-1)
size_t由sizeof()返回。 %zu说明符将打印长度。因此要返回n的大小,代码应显示为:#include
int main(void){size_t n = 123; printf(“%zu \ n”,sizeof(n));返回0;`}