C语言中共用体的输出问题

现有共用体的输出演示如下:#include"stdio.h"uniondata{intstud;charteach[10];};voidmain(){uniondatau... 现有共用体的输出演示如下:
#include"stdio.h"
union data
{
int stud;
char teach[10];
};
void main()
{
union data un1;
un1.stud=2;
un1.teach[0]=23;
un1.teach[1]=0;
un1.teach[2]=0;
printf("%d\n",un1.stud);
}
输出结果:23
#include"stdio.h"
union data
{
int stud;
char teach[10];
};
void main()
{
union data un1;
un1.stud=2;
un1.teach[0]=23;
un1.teach[1]=1;
un1.teach[2]=0;
printf("%d\n",un1.stud);
}
输出结果:279
为什么我每次改变语句中un1.teach[1]和un1.teach[2]的值,输出结果会变化呢,输出的结果不应该一直是23吗?求大神指教!
展开
 我来答
灰色世界01
2013-07-13
知道答主
回答量:22
采纳率:0%
帮助的人:11.7万
展开全部
首先你要知道计算机的存储模式,分为大端存储和小端存储。所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。

一般我们用的计算机是属于x86架构的,是小端存储的。

所以 teach[1]:teach[0] = 0000 0001 0001 0111 B = 117H = 279 D
追问
特别感谢你的回答,int型号占4个字节,char则是占1个,所以un1.stud的值其实就是un1.teach、un1.teach[1]、un1.teach[2]、un1.teach[3]这四个字符所对应的二进制数排列再转化为十进制的结果,我试了一下,和后面的un1.teach[2]、un1.teach[5]......确实没关系了!谢谢你
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式