易百教程

sizeof运算符

可以使用sizeof运算符计算给定类型占用的字节数。sizeof(int)返回int类型变量占用的字节数,结果是size_t类型的整数。
size_t在标准头文件stddef.h中定义,以及其他几个头文件。

size_t size = sizeof(long long);

可以将sizeof运算符应用于表达式。在这种情况下,结果是评估表达式得到的值的大小。以下代码将输出每种数字类型占用的字节数:

#include <stdio.h>
int main(void)
{
      printf("char类型的变量占据 %ld 字节数 \n", sizeof(char));
      printf("short类型的变量占据 %ld 字节数 \n", sizeof(short));
      printf("int类型的变量占据 %ld 字节数 \n", sizeof(int));
      printf("long类型的变量占据 %ld 字节数 \n", sizeof(long));
      printf("long long类型的变量占据 %ld 字节数 \n", sizeof(long long));
      printf("float类型的变量占据 %ld 字节数 \n", sizeof(float));
      printf("double类型的变量占据 %ld 字节数 \n", sizeof(double));
      printf("long double类型的变量占据 %ld 字节数 \n", sizeof(long double));
      return 0;
}

编译和执行上面示例代码,得到以下结果:

hema@ubuntu:~/book$ gcc main.c
hema@ubuntu:~/book$ ./a.out
char类型的变量占据 1 字节数
short类型的变量占据 2 字节数
int类型的变量占据 4 字节数
long类型的变量占据 8 字节数
long long类型的变量占据 8 字节数
float类型的变量占据 4 字节数
double类型的变量占据 8 字节数
long double类型的变量占据 16 字节数

sizeof运算符产生无符号整数值,因此使用%u%ld说明符输出它。可以使用表达式sizeof var_name获取变量var_name占用的字节数。