昨天回头看之前的笔记时发现typedef union {long i; int k[5]; char c;} DATE;得出的结果跟网上的有点出入,在网上搜到的答案是整个字节数大小是20,但是我自己运行得出的结论却不是这个数,而是24。大家看看下面的运行结果:
大家可以看出,运行得出的结论是24,而不是20,于是我便开始了测试:
测试过程是将typedef union {long i; int k[5]; char c;} DATE;里面的数组长度5改成6,即typedef union {long i; int k[6]; char c;} DATE;,但是得出的结果还是不变,结果如下:
可以看出,字节空间大小不变,那么到底是什么因素影响这个结果呢?
于是我又开始了把数字转换了几次分别用3和4又试了一遍。结果得出的结论都是16。
后我又把数字变小,用7和8试了一遍,得出的结论都是32,
于是我猜测应该是long类型的变量的问题,他在64位操作系统中占8个位,其他的要跟最大的进行对齐。
不知我的想法对不对,希望大佬们多多指点!