我一直在思考要不要使用<cstdint>
里面的typedef与否。
我个人更喜欢写 uint32_t
超过 unsigned int
和 int8_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/