c语言,第十题变量a所占内存字节数为什么是6?

如题所述

您好,你的问题,我之前好像也遇到过,以下是我原来的解决思路和方法,希望能帮助到你,若有错误,还望见谅!得看编译器设置的字节对齐了,而且也得看编译器是怎么定义int的
如果你不使用字节对齐,即紧凑存放,而且为32位编译系统,则a在内存中所占字节数为6*1+4*4+1*8=30个字节
若是4字节对齐,32位系统,则8+4*4+8=32字节
若是不字节对齐,16位编译系统(如TurboC2.0),则是6+4*2+8=22字节

你的问题,和编译器有关,得给出前提。非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-11-28
union类型是按照最占空间的变量来算空间长度的,这里最长应该是char[4]占4个字节。struct类型是按照所有变量的总长度计算字节的,所以是4+int类型的长度,这个可能要看具体的编译器,有的int类型是两个字节,有的是四个字节,所以可以选6,也可以选8。本回答被提问者和网友采纳