|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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了
|
|