Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 格式指定类型';int';但参数的类型为';无符号长';打印尺寸时出错_C - Fatal编程技术网

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