【发布时间】:2021-07-22 05:28:42
【问题描述】:
有没有办法在 C++ 中创建新的数据类型。
我有一些变量的值永远不会> 100。因此,我想创建一个新的数据类型来仅存储 0 到 100 之间的值,这也会占用更少的内存。我可以使用unsigned short smth = 100;
但是 unsigned short 也占用 16 位,并且会有很多未使用的值。需要类似 java 中的 byte 数据类型。
16 位可能无关紧要,但想从我的应用程序中提取所有性能。
如果在 C++ 中不可能,有什么方法可以在 C 中实现并在 C++ 代码中实现?
【问题讨论】:
-
尝试使用
int8_t,它需要8位。这是存储 100 等数字所需的最小值 -
类可以用于此。
-
如果你想从你的应用程序中“提取所有性能的汁液”,那么你不应该使用
unsigned short,除非它是一个巨大的数组。 Performance of built-in types : char vs short vs int vs. float vs. double, int or char? which is faster?, When to useshortoverint? -
@김선달 位域的性能更差,因为您需要更多指令来提取和设置值。只有当您有一个不适合缓存的大型数组时才合理。简而言之,这个问题只是一个premature optimization 前提
标签: c++