gpt4 book ai didi

c++ - 还是标准类型?

转载 作者:太空宇宙 更新时间:2023-11-03 10:40:22 24 4
gpt4 key购买 nike

在 Linux 上进行 C++ 编程时应该使用哪些类型?使用 stdint.h 中的类型是个好主意,例如 int16_tuint8_t

一方面,stdint.h 肯定无法在 Windows 上进行编程。另一方面,例如大小short 第一眼看不清楚。并且编写 int8_t 而不是 char 更直观......

C++ 标准是否保证标准类型的大小在未来不会改变?

最佳答案

首先,Microsoft 的实现 does support <stdint.h> .

为您正在做的事情使用适当的类型。

例如,如果您需要一个恰好 16 位宽且没有填充位的无符号类型,请使用 uint16_t , 在 <stdint.h> 中定义.

如果您需要至少 16 位宽的无符号类型,您可以使用uint_least16_t , 或 uint_fast16_t , 或 short , 或 int .

您可能并不像您认为的那样经常需要精确宽度类型。通常重要的不是类型的确切大小,而是它支持的值的范围。但是当您连接到某些外部定义的数据格式时,精确表示很重要。在这种情况下,您应该已经有了声明,告诉您要使用什么类型。

预定义类型的范围有特定要求:char至少是 8 位,shortint至少为 16 位,long至少是 32 位,并且 long long至少是 64 位。另外,short至少和char一样宽, int至少和short一样宽,等等。 (该标准指定了最小范围,但最小大小可以从范围和需要二进制表示的事实中得出。)

请注意 <stdint.h>是一个 C 头文件。如果你#include在 C++ 程序中,类型名称将直接导入到全局命名空间中,可能会也可能不会也被导入到 std 中。命名空间。如果你#include <cstdint> , 然后类型名称将被导入到 std 中命名空间,并且可能会或可能不会也被导入到全局命名空间中。宏名称,例如 UINT32_MAX不在任何命名空间中;他们总是全局性的。您可以使用任一版本的 header ;只是在使用或不使用 std:: 方面保持一致前缀。

关于c++ - <stdint.h> 还是标准类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40387662/

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