我正在学习c中的数据类型。我遇到了int_fast8_t
和int_least8_t
数据类型。我不知道这些,所以我用谷歌搜索了它。我在这里找到了一些答案:
The difference of int8_t, int_least8_t and int_fast8_t?
答案是int_fast8_t
是最快的,但我感到很惊讶,事情使它变得快速。编译器使用哪些技术来加快速度?还有,当存在int
数据类型和short
,long
修饰符来修改int大小。这个(int_fast8_t
)数据类型需要什么?
如果int_fast8_t
更快,那么我们可以忽略int
并始终选择int_fast8_t
,因为每个人都需要速度。
int_fast8_t
是否有任何限制? int_fast8_t and int
之间有哪些优缺点。
答案 0 :(得分:4)
如果您将代码从一个架构移动到另一个架构,那么简短的答案就是兼容性。
int_fast8_t
可能与int
相同,因为在大多数(多个?某些?)体系结构中,int
类型被定义为本机字的大小(32位为32位架构,64位架构的64位)。基本上,int_fast8_t
说,如果我正确地解释,基础类型将是最快的,可以保存至少8位信息。
如果您将代码移动到不同的架构,那么如果您使用int_fast8_t
,则可以确定至少还有8位可以使用。如果您只使用int
,则无法确定。
答案 1 :(得分:3)
int_fast8_t
是最快的整数类型,至少为8位宽。没有理由认为它会比int
更快(这通常是最快的整数类型。)
此外,这两种类型可能有不同的宽度,这意味着它们通常不能互换使用。
答案 2 :(得分:2)
例如,在32位平台上,int
为32位,CPU可能具有操作32位数据块的指令。它可能没有8位数据的指令。在这种情况下,CPU可能必须使用一些按位操作来处理8位类型的数据。
在这样的平台上,int_fast8_t
可以实现为32位int
。但是你不能将它用作32位int
,你只能像没有未定义行为的8位类型一样使用它。