常见笔试题(2)----sizeof、位、补码

#include <stdio.h>
#include <memory.h>

typedef struct
{
 int a:2;
 int b:2;
 int c:5;
 int d:3;
 int e:8;
 int f:4;
 unsigned int g:4;
}TEST;

int main()
{
 struct test *p;
 TEST t;

 p =(struct TEST *) &t;

 t.a = 1;
 t.b = 3;
 t.c = 1;
 t.d = 3;
 t.e = 3;
 t.f = 9;
 t.g = 9;

 printf("sizeof(TEST) = %d/n",sizeof(TEST));
 printf("t.a = %d/n",t.a);
 printf("t.b = %d/n",t.b);
 printf("t.c = %d/n",t.c);
 printf("t.d = %d/n",t.d);
 printf("t.e = %d/n",t.e);
 printf("t.f = %d/n",t.f);
 printf("t.g = %d/n",t.g);
}

运行结果:

sizeof(TEST) = 4
t.a = 1
t.b = -1
t.c = 1
t.d = 3
t.e = 3
t.f = -7
t.g = 9
Press any key to continue

解析:

t.a =01,所以t.a = 1

t.b = 11,所以t.b = -1

 t.f = [1001]补码,所以t.f = [1111]原码,所以t.f = -7

t.g = 1001,又t.g 是unsigned int ,所以t.g = 9

 

如果理解有误,请指正,谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值