c - 为什么在引用 int 变量的大小时必须使用 %ld?

标签 c printf

我这样定义一个int:

int a;

当我想查找这个 int 的大小时,我必须使用格式说明符 %ld,如下所示:

printf("int size is %ld\n", sizeof(a));

当我使用 %d 作为格式说明符时,出现以下错误:

foo.c:7:10: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long unsigned int’ [-Wformat=]
    printf("int size is %d\n", sizeof(a));

问题是,当函数的参数是int时,为什么sizeof()的结果定义为long unsigned int?

最佳答案

sizeof(anything)的类型是size_t,它是一些无符号整型常量。要打印它,您应该使用 %zu

关于c - 为什么在引用 int 变量的大小时必须使用 %ld?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32037237/

相关文章:

c - 为什么对结构使用不同的不同标记和 typedef?

android - Cygdrive 终端错误 : opus/src/opus. o 失败

c - 在 C 中表示二叉树的递归函数

php - 无法使用 printf 显示图像

c - 在参数中使用指针时的类型转换

c - 缓冲 io 使用 stdio.h 异步吗?

c - “gnuplot”在 Visual Studio 中不起作用

c - 为什么这段代码给我一个段错误?

c - 为什么 printf ("%d\n"、 printf ("%d\b"、 a)) 以这种方式工作?

c - 如何在 C 中打印 'off_t'?