union Test
{
   char a[4];
    short b;
};
Test test;
test.a[0]=256;
test.a[1]=255;
test.a[2]=254;
test.a[3]=253;
printf("%d\n",test.b);
问题:在80X86架构下,输出什么值?填空题。
输出:-256

short类型占2个字节,如果右边是低地址,左边是高地址,那么存储如下:
1111  1111           0000   0000
  test.a[1]               test.a[0]
显然b占用上面的2个字节,最高位为1,则是一个负数,取反+1后,得到-256(1000 0001 0000 0000)

相关文章:

  • 2021-10-04
  • 2021-06-26
  • 2021-11-18
  • 2022-01-07
  • 2021-11-29
  • 2021-09-11
  • 2021-07-16
  • 2021-11-22
猜你喜欢
  • 2021-12-12
  • 2021-07-10
  • 2022-12-23
  • 2021-12-26
相关资源
相似解决方案