我不确定提升是否仅仅意味着将数据类型转换为更大的数据类型(例如 short
到 int
)。
或者提升是否意味着将数据类型转换为另一种“兼容”数据类型,例如将 short
转换为 int
,这将保持相同的位模式(额外的空间将用零填充)。转换是否意味着将 int
之类的东西转换为 float
,这将创建一个完全不同的位模式?
最佳答案
有两种东西叫促销:积分促销和浮点促销。整数提升是指整数类型(包括位域和枚举
)被转换为“更大”的整数类型,而浮点提升具体只是float
到double
。
这两种类型的促销都是更广泛转化的子集。
char
->int
:积分提升float
->double
:浮点提升int
->char
:[缩小] 转化(不是促销)int
->float
: 转换const char*
->std::string
: 转换Foo
->Bar
:可能是未定义的转换?- 等等
关于c++ - 转化和推广是一回事吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28184597/