📜  C++中的类型转换

📅  最后修改于: 2021-05-30 11:31:40             🧑  作者: Mango

类型转换基本上是从一种类型到另一种类型的转换。类型转换有两种类型:

  1. 隐式类型转换也称为“自动类型转换”。
    • 由编译器自行完成,而无需用户的任何外部触发。
    • 通常在表达式中存在多个数据类型时发生。在这种情况下,进行类型转换(类型提升)以避免数据丢失。
    • 变量的所有数据类型都将升级为具有最大数据类型的变量的数据类型。
      bool -> char -> short int -> int -> 
      
      unsigned int -> long -> unsigned -> 
      
      long long -> float -> double -> long double
      
    • 隐式转换可能会丢失信息,符号可能会丢失(将符号隐式转换为无符号),并且会发生溢出(当long long被隐式转换为float时)。

    类型隐式转换的示例:

    // An example of implicit conversion
      
    #include 
    using namespace std;
      
    int main()
    {
        int x = 10; // integer x
        char y = 'a'; // character c
      
        // y implicitly converted to int. ASCII
        // value of 'a' is 97
        x = x + y;
      
        // x is implicitly converted to float
        float z = x + 1.0;
      
        cout << "x = " << x << endl
             << "y = " << y << endl
             << "z = " << z << endl;
      
        return 0;
    }
    
    输出:
    x = 107
    y = a
    z = 108
    
  2. 显式类型转换:此过程也称为类型转换,它是用户定义的。用户可以在此处键入结果以使其具有特定的数据类型。

    在C++中,可以通过两种方式完成:

    • 通过赋值转换:这是通过在括号中的表达式前面显式定义所需的类型来完成的。这也可以视为强制施放。

      句法:

      (type) expression

      其中type表示将最终结果转换为的数据类型。

      例子:

      // C++ program to demonstrate
      // explicit type casting
        
      #include 
      using namespace std;
        
      int main()
      {
          double x = 1.2;
        
          // Explicit conversion from double to int
          int sum = (int)x + 1;
        
          cout << "Sum = " << sum;
        
          return 0;
      }
      
      输出:
      Sum = 2
      
    • 使用Cast运算符转换: Cast运算符是强制将一种数据类型转换为另一种数据类型的一元运算运算符
      C++支持四种类型的转换:
      1. 静态铸件
      2. 动态投放
      3. 康斯特演员
      4. 重新诠释演员

          例子:

          #include 
          using namespace std;
          int main()
          {
              float f = 3.5;
            
              // using cast operator
              int b = static_cast(f);
            
              cout << b;
          }
          
          输出:
          3
          

类型转换的优点:

  • 这样做是为了利用类型层次结构或类型表示形式的某些功能。
  • 它有助于计算包含不同数据类型变量的表达式。
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”