首页 > 解决方案 > 转换、强制转换和强制转换有什么区别?

问题描述

我一直在审查这个问题很长时间没有找到答案,所以我决定问:转换,强制转换和强制有什么区别?我对此有点笨拙,我非常感谢使用代码示例。

标签: c++type-conversion

解决方案


[C++] 转换、强制转换和强制转换有什么区别?

  • 转换是从表达式创建值,可能会更改结果值的类型。

  • 强制转换是转换值的显式方式。一些转换不需要强制转换。这些被称为隐式转换。隐式转换示例:

    int a = 42;
    long b = a; // type of expression a is int,
                // but implicitly converted to long
    

    使用强制转换使转换显式的相同示例:

    long b = static_cast<long>(a);
    
  • 类型“强制”通常用作转换的同义词,但 C++ 语言规范中并未使用该术语。例如,该术语用于 ECMAScript 语言(即 JavaScript)。JS中的强制示例:

    Number("42") + 42  // == 84
    "42" + 42          // == "4242"
    

推荐阅读