|
- #include <stdio.h>
- #include <string.h>
- struct abcd_st {
- unsigned int a : 11;
- unsigned int b : 2;
- unsigned int c : 2;
- unsigned int d : 1;
- };
- int main(int argc,char **argv) {
- struct abcd_st abcd;
- unsigned char *ptr = (unsigned char *)&abcd;
- memset(&abcd,0xFF,1);
- memset(((char *)&abcd) + 1,0xFB,1);
- printf("abcd: %X %X\n",ptr[0],ptr[1]);
- printf("a:%X,b:%X,c:%X,d:%X\n",
- abcd.a,
- abcd.b,
- abcd.c,
- abcd.d);
- return 0;
- }
复制代码 以上代码打印的结果是:
abcd: FF FB
a:3FF,b:3,c:3,d:1
但打印出来的c是错误的,应该为1才对,有谁能解释一下这种奇怪的现象吗?
我是linux gcc version 4.1.2 |
|