首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

知名企业技术2名的题,约20行代码,上面题目的答案是什么?和大小端有关系吗,有和无,请说明理由,求大拿给个标准答案和标准分析,求,多谢

2013-01-21 
知名企业技术2名的题,约20行代码,下面题目的答案是什么?和大小端有关系吗,有和无,请说明理由,求大拿给个标

知名企业技术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();
}

[解决办法]
我用的是VS编译器,小端序
第一题:
union数据在内存的存放为:
内存号
n     10    0000 1100
n+1   1     0000 0001
由于是小端序,高位字节存储在高位,低位字节存储在低位。
因此union中i的值在内存中应该是以 (n+1 n)的序列存放,即 0000 0001  0000 1100
结果等于266

同理,第二题为
AB
6261
[解决办法]

union
{int i;
char x[2];
}a;
void main()
{
a.x[0] = 10;
a.x[1] = 1;
printf("%d",a.i);
}

输出 266(小端模式,内存中4个字节依次是 0x0A 0x01 0x00 0x00,对应int值为0x0000010A)即266

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();
}

输出 
AB
6261
[解决办法]
 
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

[解决办法]
大小端跟体系结构是相关的
x86都是小端的
arm可以设置为大端  也可以为小端
[解决办法]
为么我觉得第一题有问题的?

union
{int i;
char x[2];
}a;

这个i可能是32位,后面16位可能没有初始化过。还是我脑子锈了?

出题的人都玩16位机吗?这里为么不用short?
------解决方案--------------------


引用:
为么我觉得第一题有问题的?

union
{int i;
char x[2];
}a;

这个i可能是32位,后面16位可能没有初始化过。还是我脑子锈了?

出题的人都玩16位机吗?这里为么不用short?

int 16位 或者 32位 在这里没影响的 
他的a的定义为外部变量 初始化为全0
[解决办法]
引用:
小端的话:a.i为 0000 0000 0010 0001
大端的话:a.i为 0010 0001 0000 0000

小端的话 不应该是 :a.i为 0000 0000 0001 0010 吗

热点排行