int与int_fast8_t之间的优缺点

时间:2013-08-10 14:40:46

标签: c

我正在学习c中的数据类型。我遇到了int_fast8_tint_least8_t数据类型。我不知道这些,所以我用谷歌搜索了它。我在这里找到了一些答案:

The difference of int8_t, int_least8_t and int_fast8_t?

答案是int_fast8_t是最快的,但我感到很惊讶,事情使它变得快速。编译器使用哪些技术来加快速度?还有,当存在int数据类型和shortlong修饰符来修改int大小。这个(int_fast8_t)数据类型需要什么?

如果int_fast8_t更快,那么我们可以忽略int并始终选择int_fast8_t,因为每个人都需要速度。

int_fast8_t是否有任何限制? int_fast8_t and int之间有哪些优缺点。

3 个答案:

答案 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位类型一样使用它。