C 格式指定类型';int';但参数的类型为';无符号长';打印尺寸时出错
这是我的代码,我一直在使用它C 格式指定类型';int';但参数的类型为';无符号长';打印尺寸时出错,c,C,这是我的代码,我一直在使用它 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));
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));
}
#包括
内部主(空)
{
字符c;
双d;
浮动f;
int i;
printf(“字符:%i\n”,大小为(c));
printf(“双精度:%i\n”,大小为(d));
printf(“float:%i\n”,sizeof(f));
printf(“int:%i\n”,sizeof(i));
}
运算符的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\u t
类型的大小:
printf("size_t: %zu\n", sizeof (size_t));
,相当于
printf("size_t: %zu\n", sizeof sizeof (char/int/float/double/...));
sizeof()
的结果是类型size\u t
,而不是int
。使用%zi
或强制转换为(int)
。尝试用%zu
代替%i
。