一个关于位域的小程序!

[复制链接]
查看11 | 回复1 | 2009-6-11 18:05:03 | 显示全部楼层 |阅读模式
程序如下:
#include
typedef union _V
{
struct_PPY
{
unsigned short s1:4;
unsigned short s2:9;
unsigned short s3:3;
}PPY;

unsigned char c;
}va;
int main(void)
{
va v2;
v2.c = 100;
printf("%d\n",v2.PPY.s3);//6
printf("%d\n",v2.PPY.s2);//102
printf("%d\n",v2.PPY.s1);//4
}
按我的理解应该是 0 6 4啊!
为何是 6 102 4呢?
请知道的仁兄不要只给网址,希望解释清楚!

回复

使用道具 举报

千问 | 2009-6-11 18:05:03 | 显示全部楼层
我的环境下得到的结果是064可能与具体环境有关ps:gcc4.2.1FreeBSD SummerTown 7.2-RELEASE FreeBSD 7.2-RELEASE #0: Thu May7 14:27:43 UTC 2009
pinkguy@SummerTown:/usr/src/sys/amd64/compile/MYKERNELamd64...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行