马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
typedef union{
long i;
char j[10];
int k;
}DATE;
struct data{
int m;//4
DATE n;
double i;//8
}test;
void main()
{
DATE max;
printf_s("sizeof max =%d\n",sizeof(max));//12
printf_s("size of struct data = %d\n",sizeof(struct data));//24
printf_s("size of int = %d\n",sizeof(int));//4
printf_s("size of long = %d\n",sizeof(long));//4
printf_s("size of double = %d\n",sizeof(double));//8
printf_s("size of float = %d\n",sizeof(float));//4
printf_s("size of unsigned int = %d\n",sizeof(unsigned int));//4
}
那个共用体的内存大小是12,然后下面的结构体中用那个定义了一个变量,下面的结果为什么是24,
double不是8个字节,不是有内存对齐吗?这个怎么解释?希望会的大佬能够解答一下,谢谢!
int DATE 4的倍数就可以存储加起来16 double 8的倍数的位置存储 前面加起来16刚好是8的倍数 就接着存放double的8 结果就为24了
|