C++教程-C++中的类型转换
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 <iostream>
using namespace std;
int main ()
{
int num1 = 25; // 分配整数值
float num2; // 声明一个浮点数变量
num2 = num1; // 使用隐式转换将int值转换为float变量
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 <iostream>
using namespace std;
int main()
{
int num; // 声明int类型变量
double num2 = 15.25; // 声明并赋值double变量
num = num2; // 使用隐式类型转换将double值赋给int变量
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声明为double数据类型变量,然后将num2的值赋给num变量使用赋值运算符。因此,C++编译器在将double数据值赋给整数类型变量之前,会自动将double数据类型转换为整数类型,并将截断值15打印出来。
显式类型转换
需要用户干预以将一个变量的数据类型转换为另一个类型的转换称为显式类型转换。换句话说,显式转换允许程序员手动将数据类型从一个类型转换为另一个类型。因此,它也被称为类型转换。通常,我们通过显式类型转换来强制将一个类型转换为另一个类型,因为它不遵循隐式转换规则。
显式类型转换分为两种方式:
- 使用强制类型转换
- 使用赋值运算符进行显式转换
使用强制类型转换将float值转换为int类型的程序
强制类型转换:在C++语言中,强制类型转换是一种将一个类型强制转换为另一个类型的一元运算符。
让我们考虑一个例子,使用C++语言中显式转换的强制类型转换将float数据类型转换为int数据类型。
Program3.cpp
#include <iostream>
using namespace std;
int main ()
{
float f2 = 6.7;
int x = static_cast<int>(f2); // 使用强制类型转换运算符将数据从一种类型转换为另一种类型
cout << " The value of x is: " << x;
return 0;
}
输出
The value of x is: 6
使用赋值运算符进行显式类型转换将一个数据类型转换为另一个
让我们考虑一个例子,在C++程序中使用赋值运算符将一个变量的数据类型转换为另一个变量的数据类型。
Program4.cpp
#include <iostream>
using namespace std;
int main ()
{
float num2; // 声明一个浮点数变量
int num1 = 25; // 初始化一个整数变量
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
在上面的程序中,我们声明了num2作为浮点数类型变量,将num1初始化为整数变量25。然后使用赋值运算符将num1的数据类型从int转换为float并赋给num2变量。因此,将整数类型的值25转换为浮点数类型,并将其打印为25.0。