如何在C中创建具有自定义字节的新类型?
是否可以在C中创建一个使用我决定的字节量的新类型?如何在C中创建具有自定义字节的新类型?,c,byte,C,Byte,是否可以在C中创建一个使用我决定的字节量的新类型? 我知道一个int需要4个字节,但我需要处理非常小的数字,所以用malloc为每个int分配4个字节有点浪费,我在考虑为只需要1个字节的数字创建一个新类型…如果可能的话,你可以使用char而不是int 或者,您可以创建结构,它是C语言中最常用的自定义数据类型。 例如: struct customStructure { char c; }; 您可以使用char而不是int 或者,您可以创建结构,它是C语言中最常用的自定义数据类型。 例如:
我知道一个int需要4个字节,但我需要处理非常小的数字,所以用malloc为每个int分配4个字节有点浪费,我在考虑为只需要1个字节的数字创建一个新类型…如果可能的话,你可以使用
char
而不是int
或者,您可以创建结构
,它是C语言中最常用的自定义数据类型。
例如:
struct customStructure {
char c;
};
您可以使用
char
而不是int
或者,您可以创建结构
,它是C语言中最常用的自定义数据类型。
例如:
struct customStructure {
char c;
};
是否可以在C中创建一个使用我决定的字节量的新类型
是的,您可以声明任意正长度的char
(或signed char
或unsigned char
)数组,其上限取决于实现(但通常较大)
我知道整数需要4个字节 您错了:一个
int
可能需要四个字节,但标准不需要这样做。它所需的最小范围只能用两个字节表示,有些实现确实提供了两个字节int
s。这在历史上比今天更为普遍。此外,实现可以使int
大于四个字节。默认情况下,这是很少见的,但有些编译器提供了生成该结果的选项
但是我需要处理非常小的数字,所以用malloc为每个int分配4个字节有点浪费,我正在考虑为只需要1个字节的数字创建一个新类型…如果可能的话
单字节数字是有符号字符
或无符号字符
。从技术上讲,plainchar
也可以,但是它的签名是由实现定义的,而且作为一种风格,最好保留对字符数据的使用。另外,从技术上讲,char
及其有符号和无符号变体可能大于8位,但在这种情况下,您不太可能遇到C实现,而且C无论如何都不提供更小的数据类型
是否可以在C中创建一个使用我决定的字节量的新类型
是的,您可以声明任意正长度的char
(或signed char
或unsigned char
)数组,其上限取决于实现(但通常较大)
我知道整数需要4个字节 你错了:
int
可能需要四个字节,但标准并不要求这样。它所需的最小范围只能用两个字节表示,有些实现确实提供了两个字节int
s。这在历史上比今天更为普遍。此外,实现可以使int
大于四个字节。默认情况下,这是很少见的,但有些编译器提供了生成该结果的选项
但是我需要处理非常小的数字,所以用malloc为每个int分配4个字节有点浪费,我正在考虑为只需要1个字节的数字创建一个新类型…如果可能的话
单字节数字是
有符号字符
或无符号字符
。从技术上讲,plainchar
也可以,但是它的签名是由实现定义的,而且作为一种风格,最好保留对字符数据的使用。另外,从技术上讲,char
及其有符号和无符号变体可能大于8位,但在这种情况下,您不太可能遇到C实现,而且C无论如何都不提供更小的数据类型。严格地说,根据C标准,int
至少有2个字节,类型的实际宽度取决于机器。如果您需要具有特定宽度的数字类型,我建议您查看
中定义的类型
如果你真的想使用一个有N个字节的类型,你可以使用
char small\u numbers[N]
,通过一些小动作来弄脏你的手,但更实际的解决方案是只使用内置类型。严格地说,根据C标准,int
至少有2个字节,类型的实际宽度取决于机器。如果您需要具有特定宽度的数字类型,我建议您查看
中定义的类型
如果你真的想使用一个有N个字节的类型,你可以使用char small\u numbers[N],通过一些小动作来弄脏你的手,但更实际的解决方案是只使用内置类型。你可以分别为字节和位使用下面的结构。
typedef struct data_type_bytes {
unsigned char data;
} bytes;
typedef struct data_type_bits{
unsigned int heightValidated : 1;
} bits;
您可以分别对字节和位使用以下结构。
typedef struct data_type_bytes {
unsigned char data;
} bytes;
typedef struct data_type_bits{
unsigned int heightValidated : 1;
} bits;
一个字节类型已经存在,它被称为
char
,并且sizeof(char)=1
,因此严格地说,对于数据类型,char
是通过C可以管理的最小内存量
但是,如果您谈论的是位,这并不意味着
char
类型总是8位(在DSP中通常是10或16位的字节)。考虑到char
中的位数由char\u BIT
表示,一个字节类型已经存在,它被称为char
,并且sizeof(char)=1
,因此严格地说数据类型,char
是通过C可以管理的最小内存量
但是,如果您谈论的是位,这并不意味着
char
类型总是8位(在DSP中通常是10或16位的字节)。鉴于此,char
中的位数由char\u BIT
表示,新类型的数字只需要1个字节,在C中称为char
。您是说int8\u t
还是uint8\u t
,它们是inttype的一部分