- 论坛徽章:
- 0
|
#include <stdio.h>
int main(int argc, char** argv)
{
union
{
struct
{
char a:1;
char b:2;
char c:3;
}d;
char e;
} f;
f.d.a = 1;
printf("%d\n",f.d.a);
getchar();
return 0;
}
小字节顺上:
printf时,将f.d.a转换成一个有符号的int类型,而f.d.a在小字节最前端,刚好是符号位,所以是-1,而
大字节顺上:
printf时,将f.d.a转换成一个有符号的int类型,而f.d.a在小字节最后端,非符号位,所以是1
+++++++++++++++
int main(int argc, char** argv)
{
union
{
struct
{
char a:1;
char b:2;
char c:3;
}d;
char e;
} f;
f.e = 1;
printf("%d\n",f.d.a);
getchar();
return 0;
}
小字节顺:
f.e = 1中的1只影响f.d.a,所以为a为-1,b和c为0
大字节顺:
f.e = 1中的1对a,b,c都不影响,所以都为0 |
|