C++中的类型转换用法示例和解析

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

隐式类型转换

也称为”自动类型转换”。

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

类型隐式转换的示例:

// An example of implicit conversion
  
#include <iostream>
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

显式类型转换:此过程也称为类型转换, 它是用户定义的。用户可以在此处键入结果以使其具有特定的数据类型。

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

通过分配转换:这是通过在括号中的表达式前面明确定义所需的类型来完成的。这也可以视为强制类型转换。

语法如下:

(type) expression

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

例子:

// C++ program to demonstrate
// explicit type casting
  
#include <iostream>
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

使用强制转换操作符的转换:强制转换操作符是一种一元操作符,它强制将一种数据类型转换为另一种数据类型。

C++支持四种类型的转换:

静态转换

动态转换

const转换

重新解析转换

例子:

#include <iostream>
using namespace std;
int main()
{
     float f = 3.5;
  
     // using cast operator
     int b = static_cast < int >(f);
  
     cout << b;
}

输出如下:

3

类型转换的优点:

  • 这样做是为了利用类型层次结构或类型表示形式的某些功能。
  • 它有助于计算包含不同数据类型变量的表达式。

被认为是行业中最受欢迎的技能之一, 我们拥有自己的编码基础C ++ STL通过激烈的问题解决过程来训练和掌握这些概念。


微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?