gpt4 book ai didi

c++ - 是否有可能在 C/C++ 中获得确定/绝对大小的类型?

转载 作者:太空狗 更新时间:2023-10-29 19:43:23 25 4
gpt4 key购买 nike

我已经掩盖了一些文档,似乎规范只需要“int”或“long”或任何能够容纳“至少一些值范围”的东西(通常对应于 n 提供的最大范围字节)。

无论如何,是否有一种合理的方法来要求恰好为 n 位/字节的整数?我什至不需要指定任意长度或任何奇怪的东西的方法,我只想要一个确定为 2 个字节或确定为 4 个字节的类型。像“int32”之类的。

目前,我处理这个问题的方法是拥有一个长度为 n 的 char 数组,然后将其转换为 int * 并取消引用。

(我想要这样做的理由与直接从结构中读取/写入文件有关 - 我承认,有了这个我将不得不担心结构打包和字节序以及与之相关的东西,但这是另一个问题.. .)

此外,与 super 有限的嵌入式系统的“兼容性”也不是特别关心的问题。

谢谢!

最佳答案

C++11 标准定义了确定大小的整数类型,前提是它们在目标架构上可用。

#include <cstdint>
std::int8_t c; // 8-bit unsigned integer
std::int16_t s; // 16-bit unsigned integer
std::int32_t i; // 32-bit unsigned integer
std::int64_t l; // 64-bit unsigned integer

和相应的无符号类型

std::uint8_t  uc; //  8-bit unsigned integer
std::uint16_t us; // 16-bit unsigned integer
std::uint32_t ui; // 32-bit unsigned integer
std::uint64_t ul; // 64-bit unsigned integer

如评论中所述,这些类型也可在 C 中从 stdint.h header 中获得,无需 std:: 命名空间前缀:

#include <stdint.h>
uint32_t ui;

除了确定大小的类型,这些头文件还定义了类型

  • 至少有 n 位宽但可能更大,例如int_least16_t 至少 16 位
  • 提供至少 n 位但可能更大的整数的最快实现,例如std::int_fast32_t 至少 32 位。

关于c++ - 是否有可能在 C/C++ 中获得确定/绝对大小的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30289030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com