1
7
考虑使用
根据下面的评论
|
3
3
你不能真的有一个4位变量,但是你可以有8位变量来存储两个4位值,但是你必须用一个临时变量来访问它们,这意味着除非你有两个以上的变量,否则你不会节省任何空间:
|
4
2
正如Chris Lutz所指定的,您可以通过添加冒号和冒号的大小来定义变量使用的位数:
大多数现代编译器都会在结构中对齐变量的空间。目前最普遍的情况是4字节甚至8字节,但这因平台和编译器而异。某些编译器允许您指定数据及其成员的对齐方式。在GCC上,关键字是
'sizeof(s64位)'应该是8,实际上是这样“sizeof(s32位)”应为4, 不是的 . 在msvc上,后者是6个字节。该行为也是编译器特定的,并且通常具有编译器唯一的指令。这种行为几乎不会给你想要的。我经常使用宏来确保我要求具有一定大小的结构确实是:
我将在我的所有数据类型下面使用它,在这里我尝试指定它们的确切大小。然而,依赖sizeof(mystructure)以外的任何大小的结构进行编码很可能会导致难以调试的错误。对齐编译器指令最适合用于将数据与缓存线大小和类似的效率问题对齐。 Karl Bielefeldt提供了一个很好的自然解决方案,可以使用位移位操作将4位值存储到uint8中,而不用这些操作。 |
5
0
半字节的术语是半字节。所以这里:
你必须给你的两个变量命名
|
6
0
你有没有想过要取4位值的地址?如果是这样,您需要将它们存储在“适当”的数据类型中,例如char。 |
Community wiki · C中有哪些耗时的操作? 1 年前 |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |