|
|
1
20
比特场,从C。
|
|
|
2
8
是的,这是 bitfields . 它们通常用于定义映射到硬件寄存器的结构。如果您决定使用它们,需要记住一些事情,一个是您不知道编译器是如何在组成字段的实际字节中进行布局、排序和填充的,它们在编译器之间可以而且将有所不同(可能使用同一个编译器,但优化设置不同S也是如此。 |
|
|
3
6
这是位域定义。 name是一个能够存储40位信息的整数。颜色可以存储24位。 这样做通常是为了在经常需要的结构中节省一些空间,或者将代码压缩到CPU易于处理的大小(在您的例子中是64位)。在64位计算机上的CPU寄存器中。 但是访问位字段的代码执行速度会稍微慢一些。 |
|
|
4
3
|
|
|
5
1
在这里
接下来的内容取决于编译器和操作系统,也可能取决于硬件。在带有gcc-7的macos上(带有
这告诉我们几件事:如果
有趣的是,我们可以“选择”比允许的更多的位。见
注意:clang++更详细地解释了这一点
然而,编译器似乎在幕后分配另一个
最后替换
|
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |