类型转换基本上是从一种类型到另一种类型的转换。类型转换有两种类型:
隐式类型转换
也称为”
自动类型转换”
。
- 由编译器自行完成, 无需用户的任何外部触发。
- 通常在表达式中存在多个数据类型时发生。在这种情况下, 将进行类型转换(类型提升)以避免数据丢失。
- 变量的所有数据类型将升级为具有最大数据类型的变量的数据类型。
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
类型转换的优点:
- 这样做是为了利用类型层次结构或类型表示形式的某些功能。
- 它有助于计算包含不同数据类型变量的表达式。
推荐阅读
- Java和多重继承(Java支持多重继承吗(为什么不支持?))
- C++ OpenCV如何保存图像(代码实现详细指南)
- 互斥与信号量(Mutex和Semaphore)有什么区别()
- 如何在Angular中使用jQuery(用法代码实例)
- C++基本语法和知识点总结合集
- C++面向对象编程知识点合集总结和解释
- (服务运维)Linux内核防火墙Netfilter和iptables用户工具
- WGCLOUD的web ssh是做什么用的
- 使用Windows的KVM虚拟机与CentOS宿主机互通