数据类型所占字节数

  一直以来对于学习总吊儿郎当,找工作之时,笔试题目总抓狂,似曾相识~

  对笔试做个总结,以督促自己要多多学习。

X86 为32位系统                                                                                                              

一:整形

      int                             4字节              4

      long int                     4字节        8

      short int                   2字节             2

      unsigned int             4字节          4

      unsigned long int     4字节

      unsigned short int    2字节

二:字符型

      char                          1字节                         1

      unsigned char           1字节

三:浮点型

      float                              4字节          4

      double                          8字节     8

      long double                  8字节  

      unsigned long double   8字节

      unsigned double           8字节

四:字符串型

      string                           16字节

五:指针类型

      所有类型的指针都是 4字节        char*    8

六:函数

      除了void型。其他都函数占有的字节数等于函数的返回类型所占有的字节数。与函数体内部无关。

如:int fun(){}

      sizeof(fun()) = 4;

      

      int fun2(){string a;}

      sizeof(fun2()) = 4;

七:结构体、类

      内部各数据类型占用之和,然后取比这个和值最近的4的倍数。(如果本身已经是4的倍数就不用取了)

如:struct fun

{
      string a;   //16
      char b;     //1。和为17,最近的4的倍数是20,所以sizeof(a) = 20;
    }a;

    struct fun2
    {
      string a;   //16
      char b,c,d;     //3。和为19,最近的4的倍数是20,所以sizeof(b) = 20;
    }b;

八:联合体union

      取其中占有字节数最大的数据类型所占有的字节数。

     64位编译器

char :1个字节

char*(即指针变量): 8个字节

short int : 2个字节

int:  4个字节

unsigned int : 4个字节

float:  4个字节

double:   8个字节

long:  8个字节

long long:  8个字节

unsigned long: 8个字节

猜你喜欢

转载自blog.csdn.net/chan_52/article/details/8117257