标准库头文件<cstdint> 详解

标准库头文件 是 C++11 引入的一个头文件,定义了固定宽度的整数类型以及其他与整数相关的类型和宏。它主要提供了与 C 标准库中的 <stdint.h> 相同的功能,但以 C++ 的方式进行包装。

固定宽度整数类型

这些类型在所有平台上具有固定的宽度和有无符号性,从而确保代码的可移植性。

有符号整数类型

  • int8_t:8 位有符号整数。
  • int16_t:16 位有符号整数。
  • int32_t:32 位有符号整数。
  • int64_t:64 位有符号整数。

无符号整数类型

  • uint8_t:8 位无符号整数。
  • uint16_t:16 位无符号整数。
  • uint32_t:32 位无符号整数。
  • uint64_t:64 位无符号整数。

最小宽度整数类型

这些类型提供至少指定宽度的整数,适用于需要保证最小宽度但不关心具体实现的场合。

有符号最小宽度整数类型

  • int_least8_t
  • int_least16_t
  • int_least32_t
  • int_least64_t

无符号最小宽度整数类型

  • uint_least8_t
  • uint_least16_t
  • uint_least32_t
  • uint_least64_t

最快宽度整数类型

这些类型提供最快的至少指定宽度的整数,适用于需要保证最小宽度并且希望实现最快速度的场合。

有符号最快宽度整数类型

  • int_fast8_t
  • int_fast16_t
  • int_fast32_t
  • int_fast64_t

无符号最快宽度整数类型

  • uint_fast8_t
  • uint_fast16_t
  • uint_fast32_t
  • uint_fast64_t

指针宽度整数类型
这些类型用于存储指针值。

  • intptr_t:可以存储指针的有符号整数类型。
  • uintptr_t:可以存储指针的无符号整数类型。

最大宽度整数类型

  • intmax_t:表示最大宽度的有符号整数类型。
  • uintmax_t:表示最大宽度的无符号整数类型。

其他与整数相关的类型和宏

  • int8_t 和 uint8_t 可能在某些平台上被定义为 char,这会影响它们在函数重载中的使用。

  • 还定义了一些与整数类型相关的宏,例如 INT8_MIN、INT8_MAX、UINT8_MAX
    等,这些宏定义了对应类型的最小值和最大值。

示例代码
下面是一个使用 中定义的类型的示例:

#include <cstdint>
#include <iostream>

int main() {
    int8_t a = 127; // 最大值为 127
    uint16_t b = 65535; // 最大值为 65535
    int32_t c = -2147483648; // 最小值为 -2147483648
    uint64_t d = 18446744073709551615ULL; // 最大值为 18446744073709551615

    std::cout << "int8_t a = " << static_cast<int>(a) << std::endl;
    std::cout << "uint16_t b = " << b << std::endl;
    std::cout << "int32_t c = " << c << std::endl;
    std::cout << "uint64_t d = " << d << std::endl;

    return 0;
}

在这个示例中,我们使用了 int8_t、uint16_t、int32_t 和 uint64_t 类型,并输出它们的值。请注意,int8_t 被输出时需要进行类型转换,因为 int8_t 实际上是 char 类型,直接输出时会被解释为字符。

小结

  • 提供了固定宽度整数类型,确保代码在不同平台上的一致性。
  • 提供了最小宽度和最快宽度的整数类型,以满足不同的性能需求。
  • 提供了用于存储指针值的整数类型和最大宽度的整数类型。
  • 还定义了与这些类型相关的宏,用于获取它们的最小值和最大值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值