在C中使用sizeof运算符

par*_*hai 0 c sizeof

我写了一个代码来打印C中不同数据类型的大小.

#include<stdio.h>
int main()
{
     printf("%d", sizeof(int));//size of integer
     printf("%d", sizeof(float));
     printf("%d", sizeof(double));
     printf("%d", sizeof(char));
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,但如果我替换%d%ld,它的工作原理.我不明白为什么我long int要打印一个小范围的号码.

unw*_*ind 9

这两个都是错误的你必须%zu用来打印类型的值size_t,这是什么sizeof回报.

这是因为不同的值具有不同的大小,您必须匹配它们.

像你这样不匹配的未定义行为,所以任何事情都可能发生.

  • 如果OP使用的是MS Visual Studio并且为了完整性:MS Visual Studio在VS2013之前不支持`%zu` printf说明符.从VS2013开始(例如`_MSC_VER> = 1800`)`%zu`终于可用了.因此,如果`%zu`不可用,那么像其他答案一样投射将是一个选项. (2认同)