5

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

int8_t、int_least8_t 和 int_fast8_t 的区别?

答案int_fast8_t是最快的,但令我惊讶的是什么东西让它很快。编译器使用什么技术使其快速?而且,当存在int数据类型和short,long修饰符来修改 int 大小。this( int_fast8_t) 数据类型需要什么?

如果int_fast8_t更快,那么我们可以简单地忽略intint_fast8_t一直使用,因为每个人都需要速度。

有什么限制int_fast8_t吗?之间有什么优缺点int_fast8_t and int

4

3 回答 3

4

如果您将代码从一种架构移动到另一种架构,简短的回答就是兼容性。

int_fast8_t可能与int大多数(许多?一些?)架构中的类型相同,int类型被定义为本机字的大小(32 位架构为 32 位,64 位架构为 64 位)。基本上,int_fast8_t是说,如果我解释正确,那么底层类型将是最快的,可以保存至少 8 位信息。

如果您将代码移动到不同的体系结构,您可以确定如果您使用int_fast8_t. 如果您仅使用int.

于 2013-08-10T14:48:49.020 回答
3

int_fast8_t是最快的整数类型,至少 8 位宽。没有理由认为它会比int(通常是最快的整数类型)更快。

此外,这两种类型的宽度可能不同,这意味着它们通常不能互换使用。

于 2013-08-10T14:46:40.520 回答
3

例如,在 32 位平台上,int是 32 位的,CPU 可能有对 32 位数据块进行操作的指令。它可能没有针对 8 位数据的此类指令。在这种情况下,CPU 可能必须使用一些按位运算来处理 8 位类型的数据。

在这样的平台上,int_fast8_t可以实现为 32 位int。但是您不能将其用作 32-bit int,您只能将其用作 8-bit 类型而没有未定义的行为。

于 2013-08-10T14:56:06.480 回答