c++的结构中 int i:3; 是什么意思?

来源:百度知道 编辑:UC知道 时间:2024/05/31 03:03:49
如下: struct A{int i:3;}a;
i:3是表示i=3吗?和int i=3;不是有啥区别?

结构体里是不能赋值的,这里不是i=3的意思
i:3用来说明用3位来计数,如果是有符号数剩下的位上全为1,如果是无符号数则全是0.
比如 int i:3;总共是32位,而只用3为来计数。意思也就是说假如你将一个值赋值给i,它只会取该数的低三位,因为i是有符号数,所以高29为全为1,作为符号位。 如a.i=17,结果应为fffffff9h 如果i是无符号数则为00000001h
如果有地方不解,可以通过BaiduHi找我,我们再讨论

C/C++中Struct中冒号":"的意思
typedef struct
{
//这里的冒号代表的是占用的bit数
unsigned int a:1;//占用1个bit
unsigned int b:7;//占用7个bit

不是,我刚刚试了下,不是默认值