C语言:简单程序输出结果为何?

来源:百度知道 编辑:UC知道 时间:2024/05/24 03:45:53
#include<stdio.h>
main()
{
union
{
int x;
struct
{
char c1,c2;
}b;
}a;
a.x=0x1234;
printf("%x\n",a.b.c1);
printf("%x\n",a.b.c2);
}

#include<stdio.h>
main()
{
union
{
char s[2];
int i;
}g;g.i=0x4142;
printf("g.i=%x\n",g.i);
printf("g.s[0]=%x\tg.s[1]=%x\n",g.s[0],g.s[1]);
g.s[0]=1;g.s[1]=0;
printf("g.i=%x\n",g.i);
}

输出结果为多少,不知是否与编译器有关!该如何看!解释下最好!

好像是与编译器有关的,有些是从低字节往高字节方向存,有些是相反的。
共用体a有4个字节,a.x=0x1234; 那么当a.x被赋值后,a处的值就是
34 12 0 0;(我的电脑),那么以每字节的形式输出,就是34,12(16进制)。
第二题也是,输出为
g.i=4142
g.s[0]=42 g.s[1]=41
g.i=1

第一题
34
12
第二题
g.i=4142
g.s[0]=42 g.s[1]=41
g.i=1