2

可能重复:
'unsigned temp:3' 是什么意思?

我遇到了一种像 int这样的variable:4; 语法,谁能告诉我这个语法是什么意思?

struct abc
{
int a;
int b:2;
int c:1;
};`enter code here`
4

2 回答 2

3

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.

于 2012-11-09T09:51:44.530 回答
0

它是一个位域。而不是为 b 存储一个完整的整数,它只存储 2 位,因此 b 可以具有 -2、-1、0 和 1 的值。类似地,c 只能具有 -1 和 0 的值。

根据您拥有的编译器版本,符号扩展名有点不可预测,某些系统可能会将这些值显示为 0、1、2 和 3 或 0 和 1。

这也会将字段打包成小于一个整数,但同样,这是以实现定义的方式,您最好不要对实际使用多少内存或内存中数据的顺序做出假设。

于 2012-11-09T09:55:14.207 回答