【发布时间】:2016-07-18 21:31:01
【问题描述】:
在 C 或 C++ 中是否可以有例如 6 位有符号整数或 11 位有符号整数(或任何 n 位整数,其中 n != 2^x)?
【问题讨论】:
-
没有类似的“内置”类型,但是,您可以模拟它们。
-
查看<cstdint> 获取列表
-
@AndyG:实际上相反是正确的。 C 不要求特定的位宽。已经存在并且仍然存在例如24 位整数和
chars。没有少于 8 位的。 -
这与机器架构相关。如果机器的基本可寻址内存单元是 6 位宽,则 char 类型将是 6 位宽,但您可以像在“8 位”机器上一样声明 char; int 和 long 等也是如此。编译器会透明地处理这个问题。会改变的是这些类型的范围。如果您需要模拟这样的机器,则必须在具有 8 位基本内存可寻址单元的机器上自行实现。
-
@Olaf 好吧,任何少于 8 位的都不是 C,不是 C++,因为 C 和 C++ 都需要至少 8 位,但我确实记得我读过有关实际实现的内容更窄的文章char 但在其他方面非常类似于 C。