知名企业技术2名的题,约20行代码,下面题目的答案是什么?和大小端有关系吗,有和无,请说明理由,求大拿给个标准答案和标准分析,急求,谢谢!
union
{int i;
char x[2];
}a;
void main()
{
a.x[0] = 10;
a.x[1] = 1;
printf("%d",a.i);
}
第二题
main()
{
uinon
{
int i;
struct
{
char first;
char second;
}half;
}
number;
number.i=0x4241;
printf("%c%c\n",number.half.first,number.half.second);
number.half.first ='a';
number.half.second ='b';
printf("%x\n",number.i);
getch();
}
union
{int i;
char x[2];
}a;
void main()
{
a.x[0] = 10;
a.x[1] = 1;
printf("%d",a.i);
}
main()
{
union
{
int i;
struct
{
char first;
char second;
}half;
}
number;
number.i=0x4241;//0x42 对应字符'B'的ascii码,0x41对应字符'A'的ascii码。小端模式对应内存依次是 0x41 0x42 0x00 0x00
printf("%c%c\n",number.half.first,number.half.second);//打印前两个字节的char值
number.half.first ='a';//0x61
number.half.second ='b';//0x62
printf("%x\n",number.i);//此时内存中的值依次是 0x61 0x62 0x00 0x00。小端模式打印i的十六进制,即0x00006261,即0x6261
getch();
}
union{int i;char x[2];}a;void main(){a.x[0] = 10;a.x[1] = 1;printf("%d",a.i);}
//union总共4个字节:
地址: 0x0001: 10
0x0002: 01
0x0003: 00
0x0004: 00
所以小端的话:a.i为 0000 0000 0010 0001
大端的话:a.i为 0010 0001 0000 0000