c++ - 转化和推广是一回事吗?

标签 c++ types casting

我不确定提升是否仅仅意味着将数据类型转换为更大的数据类型(例如 shortint)。

或者提升是否意味着将数据类型转换为另一种“兼容”数据类型,例如将 short 转换为 int,这将保持相同的位模式(额外的空间将用零填充)。转换是否意味着将 int 之类的东西转换为 float,这将创建一个完全不同的位模式?

最佳答案

有两种东西叫促销:积分促销和浮点促销。整数提升是指整数类型(包括位域和枚举)被转换为“更大”的整数类型,而浮点提升具体只是floatdouble

这两种类型的促销都是更广泛转化的子集。

  • char -> int:积分提升
  • float -> double:浮点提升
  • int -> char:[缩小] 转化(不是促销)
  • int -> float: 转换
  • const char* -> std::string: 转换
  • Foo -> Bar:可能是未定义的转换?
  • 等等

关于c++ - 转化和推广是一回事吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28184597/

相关文章:

mysql - 在 MySQL 中,十进制和 double 之间有什么区别(性能方面)吗?

c++ - 将 "unsigned char *"转换为 "char *"(和字符串)

c++ - 已在 *.obj 中定义

c++ - Boost如何创建类型选择的 map ?

vector - 包含另一个向量的向量的类型是什么?

c++ - 将 float 转换为 float/int 后返回不同的结果

c - 如何在不放弃 const 的情况下实现 strstr()?

c++ - 通过非常量指针修改 const

c++ - 静态库中的多个定义

C++ - 在单元测试中创建 spy