我正在尝试为 C++ 数据类型编写可靠的摘要,但我对新数据类型有些困惑。
根据我对 C++ 数据类型的阅读理解,char16_t
和 char_32_t
是自 C++11 以来的基本数据类型和核心语言的一部分。
提到它们是不同数据类型。
Q1:这里的“不同”到底是什么意思?
问题 2:为什么像 int32_t
这样的 intxx_t
类型族没有被选为基本数据类型?选择它们而不是 int
时,它们有什么好处?
最佳答案
回答问题的第二部分:
固定大小的整数类型继承自 C,它们是 typedef
。为了兼容,决定将它们保留为 typedef
。请注意,C 语言没有重载函数,因此对“不同”类型的需求较低。
使用 int32_t
的一个原因是您需要它的一个或多个必需属性:
Signed integer type with width of exactly 32 bits with no padding bits and using 2's complement for negative values.
如果您使用 int
,它可能会,for example , 为 36 位,用 1 的补码。
但是,如果您没有非常特定 的要求,使用普通的 int
就可以了。一个优点是 int
将在所有系统上可用,而 36 位机器(或 24 位嵌入式处理器)可能根本没有任何 int32_t
。
关于C++11数据类型混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42947460/