C++11数据类型混淆

标签 c++ c++11 types char int

我正在尝试为 C++ 数据类型编写可靠的摘要,但我对新数据类型有些困惑。

根据我对 C++ 数据类型的阅读理解,char16_tchar_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/

相关文章:

C++11 lambda 实现和内存模型

c++ - 如何在 Mac OS X 上使用 gdb 打印出 vector<unique_ptr> 中的内容

c++ - 程序如何管理类型信息?

c# - 将 Object[] 转换为 String[] 或 List<String> 的最佳方法

f# - 无限类型(又名递归类型)在 F# 中是不可能的吗?

c++ - 当继承只为某些最终类型引入先决条件时如何记录/断言

java - 找到可以表示为数组的三个不同元素之和的所有数字

c++ - CMake 和 Window .Lib 文件

c++ - 互斥和变量更新

c++ - 矩阵 37x37 的行列式