可能重复:
'unsigned temp:3' 是什么意思?
我遇到了一种像 int这样的variable:4;
语法,谁能告诉我这个语法是什么意思?
struct abc
{
int a;
int b:2;
int c:1;
};`enter code here`
可能重复:
'unsigned temp:3' 是什么意思?
我遇到了一种像 int这样的variable:4;
语法,谁能告诉我这个语法是什么意思?
struct abc
{
int a;
int b:2;
int c:1;
};`enter code here`
It defines a width of a bitfield in a struct. A bitfield holds an integer value, but its length is restricted to a certain number of bits, and hence it can only hold a restricted range of values.
In the code you posted, in the structure a
is a 32-bit integer, b
is a 2-bit bitfield and c
is a 1-bit bitfield.
它是一个位域。而不是为 b 存储一个完整的整数,它只存储 2 位,因此 b 可以具有 -2、-1、0 和 1 的值。类似地,c 只能具有 -1 和 0 的值。
根据您拥有的编译器版本,符号扩展名有点不可预测,某些系统可能会将这些值显示为 0、1、2 和 3 或 0 和 1。
这也会将字段打包成小于一个整数,但同样,这是以实现定义的方式,您最好不要对实际使用多少内存或内存中数据的顺序做出假设。