写成mian了哦*/{ ch.k=20;ch.zf[0]=0;ch.zf[1]=10;printf("%d" zf[0] zf[1]分别只占了第1 2字节
|||
union un 数据结构{ int k 声明 int类型 k char zf[2] 声明 一个下标为2字符数组 名字为zf} ch; 以ch为数据结构 命名main() 用来执行的方法 main(){ ch.k=20; 为ch里以声明的变量 k赋值为20;相当于k做为ch里的一个属性 ch.zf[0]=0; 为ch里以声明的字符数 zf 的第一个值赋值为 0 ch.zf[1]=10; 为ch里以声明的字符数 zf 的第二个值赋值为 10 printf("%d" 在其它的平台上不一定是这个结果
答案补充
1 2 3 4[ int ]zf[0] zf[1]中占位的空格让系统给删了 所以总长度占4字节char型与int共享占用前2字节因此内存结构为1 2 3 4[ int ]zf[0] zf[1]这样当你给赋值时共用体的4字节内存变化如下k=20 内存变为 0X14 00 00 00zf[0]=0 内存变为 0X00 00 00 00zf[1]=10 内存变为 0X00 0A 00 00所以K实际值应该是 十进制(2560) 十六进制(0X00 00 0A 00)注意 暂默认是在PC上吧PC平台特点 int 型 32bit char型 8bit 数据排列为小端在前union 是建立一个共享的内存区因为最长的定义是int型 占4字节 因为和平台直接相关
这个问题答案不是很确定 ch.k);/*这里的“;”原文丢了...*/}运行结果:2560
ch.k) 输出 ch.k 其结果为:20}
|||
#include<stdio.h>union un{ int k;char zf[2];}ch;main() /*原程序中
请教高手解决C++编程题目
最新推荐文章于 2025-08-14 13:24:15 发布