c++ - 我应该使用 cstdint 吗?

标签 c++ cstdint

我一直在思考要不要使用<cstdint>里面的typedef与否。

我个人更喜欢写 uint32_t超过 unsigned intint8_t超过 char等等......因为它对我来说更直观。

你们怎么看?使用 <cstdint> 中的 typedef 是个好主意吗?或不?有什么缺点吗?

最佳答案

其实,我建议两者都用。

如果您想要绝对是 32 位无符号的,请使用 uint32_t。例如,如果您正在实现一个“结构”来表示一个外部对象,其规范将其字段之一定义为 32 位无符号。

如果您想要“机器的自然字长”,请使用 int 或 unsigned int。例如:

for (int i = 0 ; i < 200 ; ++i)
    // stuff

“机器的自然字长”将为您提供最佳性能,无论是在今天的处理器上还是在明天的处理器上。

如果您的意思是“字符”,请使用“char”;如果您的意思是“字节”,则为“char”或“unsigned char”。 C/C++ 允许您通过“char *”访问任意对象的字节,严格来说,不是其他任何东西。

如果您特别想要一个 8 位整数,请使用 uint8_t 或 int8_t,类似于 uint32_t。

关于c++ - 我应该使用 cstdint 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6144682/

相关文章:

c - 在编译期间如何转换 <stdint.h> 中的标准整数?

c++ - 如何检查是否定义了固定宽度整数

c++ - 如何以编程方式停止进程

c++ - Windows CE - 禁用 CComboBox 突出显示

c# - 加快构建时间的方法? (C#/非托管 C++)

c++ - 过滤嵌套动态元组(dynamic tuple of tuples)

c++ - 如何加快LUT查找的直方图?

c++ - 利用 C++11 中 int*_t、int_fast*_t 和 int_least*_t 之间的差异的一个好例子是什么?