在`<cstdint>`</cstdint>中使用的命名约定

时间:2012-03-18 12:26:55

标签: c++ c

<cstdint><stdint.h>)标头定义了几种整数类型,它们的名称遵循以下模式:intN_t,其中N是位数,而不是字节。< / p>

鉴于字节未严格定义为8位长度,为什么这些类型不能定义为,例如int1_t而不是int8_t?这不是更合适,因为它考虑了具有不同长度字节的机器吗?

3 个答案:

答案 0 :(得分:6)

在没有这些尺寸的机器上,未定义类型。也就是说,如果您的机器没有8位字节,则int8_t将不可用。但是,您仍然可以使用最少的版本,例如int_least16_t

人们怀疑的原因是,如果你想要一个精确的大小,你通常需要一个比特大小而不是一个抽象的字节大小。例如,所有互联网协议都处理8位字节,因此您需要具有8位,无论是否为本机字节大小。


在这方面,

This answer也非常有用。

答案 1 :(得分:5)

int32_t可以是4字节8位/字节类型,也可以是2字节16位/字节类型,也可以是1字节32-每字节位类型。您可以存储在其中的值无关紧要。

答案 2 :(得分:3)

使用这些类型的想法是明确可以存储到变量中的位数。正如您所指出的,不同的体系结构可能具有不同的字节大小,因此具有字节数并不能保证变量可以处理的位数。