生死狙击ol下载:c++(8+4+1为什么回等于16? 请各位帮帮忙

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 12:51:25
//205.10.2
#include<string.h>
#include<iostream.h>
typedef struct date //这样定义必须有typedef
{
int a; char b; double c;
}max;

void main()
{

cout<<sizeof(max)<<endl;
}

就是说~存储只能以最小的2的幂存储
例如:char=1就是2^0
int=4 就是2^2;
double=8 就是2^3
sizeof(char+int+double)=13
2^3<13<2^4(8<13<16)
内存分配的时候是按2的幂来分配的,所以就算MAX只需要13的空间计算机还是会分配16给它的

因为16是能存储下8+4+1的最小的2的幂,所以是16.8+4+2 8+4+3也是16,但是8+4+4+1就是32了。这是C++的存储方式。

你这是定义一个结构题,double是8字节,int是4字节,MAX事结构体变量 名,但是你没有初始化,系统默认

内存的对齐:为了发挥CPU的效率,用了4个字节即计算机的字长在存放一个char。