这是我的代码,我一直收到此错误。
format specifies type 'int' but the argument has type 'unsigned long'
我从讲座中复制了代码,所以我不知道什么是错的。任何帮助表示赞赏!
#include <stdio.h>
int main(void)
{
char c;
double d;
float f;
int i;
printf("char: %i\n", sizeof(c));
printf("double: %i\n", sizeof(d));
printf("float: %i\n", sizeof(f));
printf("int: %i\n", sizeof(i));
}
答案 0 :(得分:4)
sizeof
运算符的结果类型为size_t
,这是一种无符号类型。要打印它们,请使用printf("%zu", ...);
。
在您的情况下,将printf()
语句更改为
printf("char: %zu\n", sizeof c);
printf("double: %zu\n", sizeof d);
printf("float: %zu\n", sizeof f);
printf("int: %zu\n", sizeof i);
实际上,您不需要为每种类型创建变量。你可以写
printf("char: %zu\n", sizeof (char));
printf("double: %zu\n", sizeof (double));
printf("float: %zu\n", sizeof (float));
printf("int: %zu\n", sizeof (int));
另外,要检查size_t
类型的大小:
printf("size_t: %zu\n", sizeof (size_t));
,相当于
printf("size_t: %zu\n", sizeof sizeof (char/int/float/double/...));