位段问题-什么时候取补码?
struct bs
{
unsigned a:3;
int b:3;
unsigned c:7;
} bit,*pbit;
bit.a=3;
//bit.b=0x17;
bit.b=3;
bit.c=12;
printf( "%d,%d,%d\n ",bit.a,bit.b,bit.c);
struct tmdf
{
int a:1;
int b:3;
int c:4;
}ff ;
ff.a=1;
ff.b=3;
ff.c=12;
cout < < "ff.a: " < <ff.a < < " " < <ff.b < < " " < <ff.c < <endl;
为什么bit.b=3而ff.b=-1
不是说取补码吗怎么bit.b不是,而ff.b是取补码
[解决办法]
3,3,12
-1,3,-4
请按任意键继续. . .
[解决办法]
不会的应该是一样的 有3个位能就算一个符号剩下2位也能表示3以内的数据
[解决办法]
我测试的是3,没错.我用的是gcc version 3.4.4 20050721 (Red Hat 3.4.4-2)
你用的什么编译器?是不是它的问题