一直以来对于学习总吊儿郎当,找工作之时,笔试题目总抓狂,似曾相识~
对笔试做个总结,以督促自己要多多学习。
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个字节