发布网友
共5个回答
热心网友
意思是让int值占4位,准确的写法应该是:unsigned int b:4;意思是让b占四位,unsigned int b:8;就是让b占8位,是为了内存对齐而写的,一些操作系统要求必须8位对齐,那一个int如果不满8位,就要强制让他占8位,浪费一些空间而已。
追问可是为什么不写成unsigned int b:4;写成unsigned int :4;也不会报错?
热心网友
意思是让int值占4位,准确的写法应该是:unsigned int b:4;意思是让b占四位,unsigned int b:8;就是让b占8位,是为了内存对齐而写的,一些操作系统要求必须8位对齐,那一个int如果不满8位,就要强制让他占8位,浪费一些空间而已。
追问可是为什么不写成unsigned int b:4;写成unsigned int :4;也不会报错?
热心网友
这个语句有问题吧
如果是
unsigned int name:4;
表示定义一个变量name,占用无符号整形的 4个bit位,这个位域的用法
一般用在结构体中来减少占用的内存空间
热心网友
你这个是位段里面用的。
位段(bit-field)是以位为单位来定义结构体(或联合体)中的成员变量所占的空间。含有位段的结构体(联合体)称为位段结构。采用位段结构既能够节省空间,又方便于操作。
位段的定义格式为:
type [var]: digits
其中type只能为int,unsigned int,signed int三种类型(int型能不能表示负数视编译器而定,比如VC中int就默认是signed int,能够表示负数)。位段名称var是可选参数,即可以省略。digits表示该位段所占的二进制位数。追问可是为什么不写成unsigned int b:4;写成unsigned int :4;也不会报错?
追答你看上面写了:
位段名称var是可选参数,即可以省略
热心网友
编译会出错吧
热心网友
你可以去看一下C语言的位模式
热心网友
这个语句有问题吧
如果是
unsigned int name:4;
表示定义一个变量name,占用无符号整形的 4个bit位,这个位域的用法
一般用在结构体中来减少占用的内存空间
热心网友
你这个是位段里面用的。
位段(bit-field)是以位为单位来定义结构体(或联合体)中的成员变量所占的空间。含有位段的结构体(联合体)称为位段结构。采用位段结构既能够节省空间,又方便于操作。
位段的定义格式为:
type [var]: digits
其中type只能为int,unsigned int,signed int三种类型(int型能不能表示负数视编译器而定,比如VC中int就默认是signed int,能够表示负数)。位段名称var是可选参数,即可以省略。digits表示该位段所占的二进制位数。追问可是为什么不写成unsigned int b:4;写成unsigned int :4;也不会报错?
追答你看上面写了:
位段名称var是可选参数,即可以省略
热心网友
编译会出错吧
热心网友
你可以去看一下C语言的位模式