首页 > 解决方案 > 如何在 C 中创建具有自定义字节的新类型?

问题描述

是否可以在 C 中创建一个使用我决定的字节数的新类型?我知道一个 int 需要 4 个字节,但我需要处理非常小的数字,所以为每个 int 分配 4 个字节和 malloc 有点浪费,我正在考虑为只需要 1 个字节的数字创建一种新类型。 ..如果它是可能的

标签: cbyte

解决方案


是否可以在 C 中创建一个使用我决定的字节数的新类型?

是的,你可以声明一个你喜欢的任何正长度的char(或signed char或)数组,直到一个依赖于实现(但通常很大)的限制。unsigned char

我知道一个 int 需要 4 个字节,

你错了:一个int 可能需要四个字节,但标准并不要求这样做。它的最小要求范围只能用两个字节来表示,有些实现确实提供了两个字节int。这在历史上比今天更普遍。此外,实现可以int 大于四个字节。默认情况下这种情况很少见,但一些编译器提供了产生该结果的选项。

但我需要处理非常小的数字,因此为每个 int 分配 4 个字节的 malloc 有点浪费,我正在考虑为只需要 1 个字节的数字创建一种新类型......如果可能的话。

单字节数字是 asigned charunsigned char。从技术上讲,plainchar也符合条件,但它的符号是实现定义的,并且作为一种风格,最好将其用于字符数据。此外,从技术上讲,char它的有符号和无符号变体可能大于 8 位,但在这种情况下,您不太可能遇到 C 实现,而且 C 无论如何也不提供更小的数据类型。


推荐阅读