首页 热点资讯 义务教育 高等教育 出国留学 考研考公

【C语言】unsigned int : 4;是什么意思?

发布网友

我来回答

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语言的位模式

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com