一、格式
sizeof(参数)
- 参数可以是
数据类型
的关键字,也可以是变量名
或某个具体的值
。- 返回某种数据类型或某个值占用的字节数量。
二、实例
1.参数为数据类型
int x = sizeof(int); // 通常是 4
2.参数为变量
int i;
sizeof(i); // 通常是 4
3.参数为数值
sizeof(3.1); // 浮点数的字面量默认存储为 double 类型,故返回 8
三、返回值类型说明
sizeof 运算符的返回值,C 语言只规定是无符号整数,并没有规定具体的类型,留给系统自己去决定sizeof 到底返回什么类型。不同的系统中,返回值的类型有可能是 unsigned int ,也有可能是unsigned long ,甚至是 unsigned long long ,对应的 printf() 占位符分别是 %u 、 %lu和 %llu 。这样不利于程序的可移植性。
C 语言提供了一个解决方法,创造了一个类型别名size_t
,用来统一表示 sizeof 的返回值类型。该别名定义在stddef.h
头文件里面,对应当前系统的 sizeof 的返回值类型,可能是 unsigned int ,也可能是 unsigned long 。
printf() 有专门的占位符%zd
或%zu
,用来处理 size_t 类型的值。
printf("%zd\n", sizeof(int)); //不管 sizeof 返回值的类型是什么, %zd 占位符(或 %zu )都可以正确输出。