c - 如何在 C 中创建具有自定义字节的新类型?
问题描述
是否可以在 C 中创建一个使用我决定的字节数的新类型?我知道一个 int 需要 4 个字节,但我需要处理非常小的数字,所以为每个 int 分配 4 个字节和 malloc 有点浪费,我正在考虑为只需要 1 个字节的数字创建一种新类型。 ..如果它是可能的
解决方案
是否可以在 C 中创建一个使用我决定的字节数的新类型?
是的,你可以声明一个你喜欢的任何正长度的char
(或signed char
或)数组,直到一个依赖于实现(但通常很大)的限制。unsigned char
我知道一个 int 需要 4 个字节,
你错了:一个int
可能需要四个字节,但标准并不要求这样做。它的最小要求范围只能用两个字节来表示,有些实现确实提供了两个字节int
。这在历史上比今天更普遍。此外,实现可以int
大于四个字节。默认情况下这种情况很少见,但一些编译器提供了产生该结果的选项。
但我需要处理非常小的数字,因此为每个 int 分配 4 个字节的 malloc 有点浪费,我正在考虑为只需要 1 个字节的数字创建一种新类型......如果可能的话。
单字节数字是 asigned char
或unsigned char
。从技术上讲,plainchar
也符合条件,但它的符号是实现定义的,并且作为一种风格,最好将其用于字符数据。此外,从技术上讲,char
它的有符号和无符号变体可能大于 8 位,但在这种情况下,您不太可能遇到 C 实现,而且 C 无论如何也不提供更小的数据类型。
推荐阅读
- c# - 为 Windows 10 IoT Core 使用 IS_Nrf24L01 nuget 包
- mysql - 从查询中获取最后一个单词
- c# - 比较两个复杂的数据列表
- bash - sed 或 awk 删除包含换行符的模式
- xtermjs - 多个终端实例化,回滚不适用于隐形终端
- c++ - 如何将不同无序映射的地址存储到另一个无序映射中,然后通过引用来使用?
- visual-c++ - MBCS 文件菜单生成 ???? 人物
- javascript - Symfony 3.4 - Webpack Encore 和 DOMPurify
- xml - XSL:根据属性计数和匹配创建组
- windows - 在 Sublime Text 3 中构建时权限被拒绝