C++ 类型转换
在这个主题中,我们将讨论在C++编程语言中将一个数据类型转换为另一个的过程。类型转换是将一个变量的预定义数据类型转换为适当的数据类型的过程。类型转换的主要思想是将两个不同的数据类型变量转换为一个单一的数据类型,以便在没有数据丢失的情况下轻松解决数学和逻辑表达式。
例如,我们要对两个数字进行相加,其中一个变量是int类型,另一个是float类型;我们需要将int变量转换或强制转换为float类型,使它们两个都成为float数据类型,以便相加。
在C++中,类型转换可以以两种方式进行,一种是 隐式类型转换 ,另一种是 显式类型转换 。这些转换是由编译器自身完成的,称为隐式类型或自动类型转换。用户进行的转换或需要用户干预的转换称为显式或用户定义的类型转换。让我们讨论一下C++中的隐式和显式类型转换。
隐式类型转换
隐式类型转换是编译器在没有任何人为干预的情况下自动进行的转换。这意味着隐式转换根据C++编译器的某些预定义规则自动将一种数据类型转换为另一种类型。因此,它也被称为 自动类型转换 。
例如:
int x = 20;
short int y = 5;
int z = x + y;
在上面的示例中,有两个不同的数据类型变量x和y,其中x是int类型,y是short int数据类型。变量z是一个整数类型,存储x和y变量。但是,在计算两个数字的和之前,C++编译器会自动将较低级别的数据类型(short int)的值转换为较高的类型(int)。因此,它避免了C++中隐式类型转换中的数据丢失、溢出或符号丢失。
隐式转换的类型转换顺序
以下是从较低级别到较高级别的数据类型的正确顺序:
bool -> char -> short int -> int -> unsigned int -> long int -> unsigned long int -> long long int -> float -> double -> long double
将int类型转换为float类型的程序,使用隐式类型转换
让我们创建一个程序,使用隐式类型转换将较小的数据类型转换为较高的类型。
Program1.cpp
#include
using namespace std;
int main ()
{
// assign the integer value
int num1 = 25;
// declare a float variable
float num2;
// convert int value into float variable using implicit conversion
num2 = num1;
cout << " The value of num1 is: " << num1 << endl;
cout << " The value of num2 is: " << num2 << endl;
return 0;
}
输出
The value of num1 is: 25
The value of num2 is: 25
使用隐式类型转换程序将double转换为int数据类型
让我们创建一个程序,使用隐式类型转换将较高的数据类型转换为较低的类型。
Program2.cpp
#include
using namespace std;
int main()
{
int num; // declare int type variable
double num2 = 15.25; // declare and assign the double variable
// use implicit type conversion to assign a double value to int variable
num = num2;
cout << " The value of the int variable is: " << num << endl;
cout << " The value of the double variable is: " << num2 << endl;
return 0;
}
输出
The value of the int variable is: 15
The value of the double variable is: 15.25
在上面的程序中,我们将num声明为整数类型,将num2声明为双精度数据类型的变量,并将num2赋值为15.25。之后,我们使用赋值运算符将num2的值赋给num变量。因此,C++编译器在将其分配给num变量之前会自动将双精度数据值转换为整数类型,并打印截断值为15。
显式类型转换
需要 用户干预 来将一个变量的数据类型更改为另一个变量的转换称为 显式类型转换 。换句话说,显式转换允许程序员手动从一个变量的数据类型更改或强制转换为另一个类型。因此,它也称为类型转换。通常,我们强制进行显式类型转换以将数据从一种类型转换为另一种类型,因为它不遵循隐式转换规则。
显式类型转换分为两种方式:
- 使用类型转换操作符进行显式转换
- 使用赋值运算符进行显式转换
使用类型转换操作符将浮点数值转换为int类型的程序
转换操作符: 在C++语言中,转换操作符是一种一元操作符,用于将一种类型强制转换为另一种类型。
让我们以在C++语言中使用显式转换的类型转换操作符将浮点数数据类型转换为int类型的示例。
程序3.cpp
#include
using namespace std;
int main ()
{
float f2 = 6.7;
// use cast operator to convert data from one type to another
int x = static_cast (f2);
cout << " The value of x is: " << x;
return 0;
}
输出
The value of x is: 6
使用赋值运算符将一种数据类型转换为另一种的程序
让我们考虑一个示例,使用C++程序中的赋值运算符将一个变量的数据类型转换为另一个。
Program4.cpp
#include
using namespace std;
int main ()
{
// declare a float variable
float num2;
// initialize an int variable
int num1 = 25;
// convert data type from int to float
num2 = (float) num1;
cout << " The value of int num1 is: " << num1 << endl;
cout << " The value of float num2 is: " << num2 << endl;
return 0;
}
输出
The value of int num1 is: 25
The value of float num2 is: 25.0