<cstdint> (<stdint.h>)标头定义了几个整型,它们的名称遵循以下模式:intN_t,其中N是位数,而不是字节数。
假设一个字节没有严格定义为8位长度,为什么不将这些类型定义为int1_t而不是int8_t呢?这不是更合适吗,因为它考虑到了具有异常长度的字节的机器?
发布于 2012-03-18 20:33:46
在没有这些大小的机器上,类型是没有定义的。也就是说,如果你的机器没有8位字节,那么int8_t将不可用。但是,您仍然拥有最少的可用版本,例如int_least16_t。
人们怀疑的原因是,如果你想要一个精确的大小,你通常需要一个位大小,而不是一个真正的抽象字节大小。例如,所有internet协议都处理8位字节,因此您可能希望有8位字节,无论这是不是本机字节大小。
在这方面,This answer也提供了相当丰富的信息。
发布于 2012-03-18 20:33:00
int32_t可以是4字节8位/字节类型,也可以是2字节16位/字节类型,也可以是1字节32位/字节类型。您可以在其中存储的值并不重要。
发布于 2012-03-18 20:32:59
使用这些类型的想法是明确表示可以存储到变量中的位数。正如您所指出的,不同的体系结构可能具有不同的字节大小,因此拥有字节数并不能保证变量可以处理的位数。
https://stackoverflow.com/questions/9758269
复制相似问题