什么时候应该使用stdint.h中的数据类型?总是使用它们作为惯例是正确的吗?设计非特定尺寸类型(如int和short)的目的是什么?
chu*_*ica 20
什么时候应该使用stdint.h中的数据类型?
是否总是将它们作为惯例使用(然后)?
事情就这样倾向了.固定宽度的类型是一个较新的除了C.原始C具有char, short, int, long与那是进步的,因为它试图,而不过于特定,以适应在各种不同的处理器和环境的各种可用的整数尺寸.由于C已有40年历史,它说明了该战略的成功.已经编写了很多C代码并成功地处理了软整数规范大小.随着对一致性的需求的增加char, short, int, long and long long,是不够的(或者至少不那么容易),因此int8_t, int16_t, int32_t, int64_t诞生了.新语言往往需要非常特定的固定整数大小类型和2的补码.由于它们是成功的,达尔文的压力将推动C.我的水晶球说我们将看到缓慢迁移到C中增加固定宽度类型的使用.
设计非特定尺寸类型(如int和short)的目的是什么?
这是一个很好的第一步,适应各种各样的整数宽度(8,9,12,18,36等)和编码(2,1,符号/ mag).今天如此多的编码使用2次幂的2次幂整数,人们可能没有意识到事先存在许多其他的安排.也看到这个答案.
我的工作要求我使用它们,而且我真的很喜欢使用它们。
当我必须实现一个协议并在一个结构中使用它们时,我发现它很有用,该结构可以是需要发送的消息或某些信息的持有者。
如果我必须使用需要递增的序列号,我不会使用 int,因为序列号不应为负数。我用 uint32_t 代替。因此,我将知道序列号空间并可以相应地进行计划/编码。
我们编写的代码将在 32 位和 64 位机器上运行,因此在不同位机器上使用“int”会导致微妙的错误,这些错误可能很难识别。使用 unint16_t 将在 32 或 64 位架构上分配 16 位。