std :: uint8_t的底层类型

时间:2017-06-21 20:28:56

标签: c++ standard-library

问题
是否存在std::uint8_t存在的c ++工具链,但 unsigned char(或char的typedef,如果它是无符号的)?

编辑: 相反:在符合标准的实施中,这样的事情是否可行?

背景/动机
我主要是因为我想知道std::uint8_t*是否可以移植来访问单个字节(就像unsigned char*)。是的,我知道std::byte,但这与此无关。我主要对x86,arm和mips的工具链感兴趣,但出于好奇,我也想听听其他的例子。

1 个答案:

答案 0 :(得分:1)

  1. char不是无符号整数类型,即使它实际上是无符号的。由于uint8_t必须是无符号整数类型,因此它永远不能是char
  2. CHAR_BIT必须至少为8,而下一个最小的标准无符号整数类型unsigned short必须至少为16位。如果uint8_t存在,则它必须是"无符号整数类型,宽度为8且没有填充位。"如果uint8_t表示标准无符号整数类型,那么它只能是unsigned char
  3. 但是,措辞中没有任何内容阻止uint8_t表示实现定义的扩展无符号整数类型。但是,我不知道任何执行此操作的实现。