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不是。这只是一种转换。推广和加宽也是一回事吗?加宽不是标准中的一个术语。