C++ 转换和提升是一回事吗?
我不确定升级是否仅仅意味着将数据类型转换为更大的数据类型(例如C++ 转换和提升是一回事吗?,c++,types,casting,C++,Types,Casting,我不确定升级是否仅仅意味着将数据类型转换为更大的数据类型(例如short到int) 或者升级是否意味着将一种数据类型转换为另一种“兼容”数据类型,例如将short转换为int,这将保持相同的位模式(额外的空间将用零填充)。转换是否意味着将int转换为float,这将创建一个完全不同的位模式?有两种东西被称为提升:积分提升和浮点提升。整数提升是指将整数类型(包括位字段和enums)转换为“更大”的整数类型,而浮点提升就是将float转换为double 这两种类型的促销都是更广泛转换的子集 cha
short
到int
)
或者升级是否意味着将一种数据类型转换为另一种“兼容”数据类型,例如将
short
转换为int
,这将保持相同的位模式(额外的空间将用零填充)。转换是否意味着将int
转换为float
,这将创建一个完全不同的位模式?有两种东西被称为提升:积分提升和浮点提升。整数提升是指将整数类型(包括位字段和enum
s)转换为“更大”的整数类型,而浮点提升就是将float
转换为double
这两种类型的促销都是更广泛转换的子集
->char
:整体升级int
->float
:浮点提升double
->int
:[缩小]转换(非提升)char
->int
:转换float
->const char*
:转换std::string
->Foo
:可能是未定义的转换Bar
- 等等
因此,从整数类型到浮点类型的转换不称为提升(即使浮点类型可以表示整数类型的所有值)?@rony\t不是。这只是一种转换。推广和加宽也是一回事吗?加宽不是标准中的一个术语。