类型转换基本上是从一种类型到另一种类型的转换。类型转换有两种类型:
隐式类型转换
也称为”自动类型转换”。
- 由编译器自行完成, 无需用户的任何外部触发。
- 通常在表达式中存在多个数据类型时发生。在这种情况下, 将进行类型转换(类型提升)以避免数据丢失。
- 变量的所有数据类型将升级为具有最大数据类型的变量的数据类型。
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通过激烈的问题解决过程来训练和掌握这些概念。