首页 > 代码库 > sizeof运算符

sizeof运算符

sizeof是一个单目运算符,它的运算对象是变量或数据类型,运算结果为一个整数。运算的一般形式如下:

sizeof(<类型或变量名>) 

它只针对数据类型,而不针对变量!

若运算对象为变量,则所求的结果是这个变量占用的内存空间字节数;若运算对象是数据类型,则所求结果是这种数据类型的变量占用的内存空间字节数。

sizeof是一个使用频率很高的操作符,经常用来获取变量或数据类型所占用的内存空间的大小,下面的程序显示了sizeof的用法。

#include <stdio.h>

struct Student

{

        int number;

     char name[8];

};

enum season{

     spring,s ummer, fall, winter

};

 

int main()

{

    int a = 10;

    float b = 3.5;

    struct Student s1 = {1, “zhangsan”};

    enum season myseason;

   

    printf ("the size of char is %d bytes\n",sizeof(char));

    printf ("the size of short is %d bytes\n",sizeof(short));

    printf ("the size of int is %d bytes\n",sizeof(int));

    printf ("the size of a is %d bytes\n",sizeof(a));

    printf ("the size of long is %d bytes \n",sizeof(long));

    printf ("the size of long long is %d bytes \n",sizeof(long long));

    printf ("the size of float is %d bytes \n",sizeof(float));

    printf ("the size of b is %d bytes \n",sizeof(b));

    printf ("the size of double is %d bytes \n",sizeof(double));

    printf ("the size of struct Student is %d bytes \n",sizeof(struct Student));

    printf ("the size of enum season is %d bytes \n", sizeof (enum season));

    printf ("the size of myseason is %d bytes \n", sizeof (myseason));

 

     return 0;

}

程序执行结果如下:

linux@ubuntu:~/book/ch4$ cc test.c –o test -Wall

linux@ubuntu:~/book/ch4$./test

the size of char is 1 bytes

the size of short is 2 bytes

the size of int is 4 bytes

the size of a is 4 bytes

the size of long is 4 bytes

the size of long long is 8 bytes

the size of float is 4 bytes

the size of b is 4 bytes

the size of double is 8 bytes

the size of struct Student is 12 bytes

the size of enum season is 4 bytes

the size of myseason is 4 bytes

从该结果中,可以清楚地看到不同数据类型及变量所占的字节数,读者应该熟悉这些结果。还可以看到,变量所占用的空间,由其数据类型决定,与变量的值没有关系。

sizeof运算符