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。

https://stackoverflow.com/questions/6144682/

相关文章:

c++ - 对于所有对象类型 T,sizeof(T) >= alignof(T) 是否总是如此?

c++ - 访问类中定义的 friend 功能

c++ - 打包结构是可移植的吗?

c++ - std::vector 是 `user-defined type` 吗?

c++ - 从多个线程使用 stdlib 的 rand()

c++ - 我们可以有一个虚拟静态方法吗? (c++)

c++ - 在 getter 函数中返回 const 引用或拷贝?

c++ - 为什么这个包含 rand() 的 C++11 代码多线程比单线程慢?

c++ - 存储未初始化的 STL vector ?

c++ - C 和 C++ 中的多字 rune 字