作业帮 > 综合 > 作业

union { int i; char x[2]; }a; int main() { a.x[0]=10; a.x[1]

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/05/31 11:03:22
union { int i; char x[2]; }a; int main() { a.x[0]=10; a.x[1]=1; printf("%d\n",a.i); return 0; } 输出结果是什么,
union { int i; char x[2]; }a; int main() { a.x[0]=10; a.x[1]
union 只分配一块内存,有i和x公用, 即修改了x的内容,i的内容也改变了
按照内存分布,x 改之后内存为 0x010a
也就是说,i的内存时0x10a
也就是10进制266
再问: 谢谢。只是我是C++初学者,对union这方面只是一点都不懂,能再具体点嘛
再答: union这种类型,就是内部的变量共同使用一块空间,按照size大的分配 int i 占4个字节 char x[2] 占2个,所以一共分配了4个字节 可以使用 sizeof(a) 来看下它的总大小 一共4个字节的内存,对应x来说相当于占用了低2个字节,而给x赋值的1,和10,就存在个位和十位上了(十六进制) 如果还不懂,那没啥办法了,以后多学点就知道了
再问: 明白了。谢谢!