我这样定义一个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/