C++ 类型转换

2025年3月21日 | 阅读 5 分钟

在本主题中,我们将讨论在C++编程语言中将一种数据类型转换为另一种数据类型。类型转换是将一个变量的预定义数据类型转换为适当数据类型的过程。类型转换背后的主要思想是将两个不同数据类型的变量转换为单一数据类型,以便轻松解决数学和逻辑表达式,而不会丢失任何数据。

Type Conversion in C++

例如,我们正在将两个数字相加,其中一个变量是 int 类型,另一个是 float 类型;我们需要将 int 变量转换或类型转换为 float,使它们都成为 float 数据类型,以便相加。

在C++中,类型转换可以通过两种方式完成,一种是隐式类型转换,第二种是显式类型转换。由编译器自身完成的转换称为隐式类型转换或自动类型转换。由用户完成或需要用户干预的转换称为显式类型转换或用户定义类型转换。让我们来讨论C++中的隐式和显式类型转换。

隐式类型转换

隐式类型转换是由编译器自动完成的一种转换,无需任何人为操作。这意味着隐式转换会根据C++编译器的一些预定义规则,自动将一种数据类型转换为另一种类型。因此,它也被称为自动类型转换

例如

在上面的例子中,有两个不同数据类型的变量 x 和 y,其中 x 是 int 类型,y 是 short int 数据类型。结果变量 z 也是一个整数类型,用于存储 x 和 y 变量。但是C++编译器会在得出两个数之和的结果之前,自动将较低等级的数据类型(short int)的值转换为较高类型(int)。因此,它避免了在C++的隐式类型转换中出现数据丢失、溢出或符号丢失。

隐式转换中的类型转换顺序

以下是从低等级到高等级数据类型的正确顺序

使用隐式类型转换将 int 转换为 float 类型的程序

让我们创建一个程序,使用隐式类型转换将较低等级的数据类型转换为较高类型。

Program1.cpp

输出

The value of num1 is: 25
The value of num2 is: 25

使用隐式类型转换将 double 转换为 int 数据类型的程序

让我们创建一个程序,使用隐式类型转换将较高的数据类型转换为较低类型。

Program2.cpp

输出

The value of the int variable is: 15
 The value of the double variable is: 15.25

在上面的程序中,我们已将 num 声明为整数类型,将 num2 声明为 double 数据类型变量,然后将 num2 赋值为 15.25。之后,我们使用赋值运算符将 num2 的值赋给 num 变量。因此,C++编译器在将其赋值给 num 变量之前,会自动将 double 数据值转换为整数类型,并打印截断后的值 15。

显式类型转换

需要用户干预来将一个变量的数据类型更改为另一个变量的数据类型的转换,称为显式类型转换。换句话说,显式转换允许程序员手动更改或类型转换数据类型,从一个变量的类型转换到另一个类型。因此,它也被称为类型转换(typecasting)。通常,我们强制进行显式类型转换,以便将数据从一种类型转换为另一种类型,因为它不遵循隐式转换的规则。

显式类型转换分为两种方式

  1. 使用转换运算符的显式转换
  2. 使用赋值运算符的显式转换

使用转换运算符将 float 值转换为 int 类型的程序

转换运算符: 在C++语言中,转换运算符是一个一元运算符,它强制将一种类型转换为另一种类型。

让我们来看一个例子,在C++语言中使用显式转换的转换运算符将 float 数据类型转换为 int 类型。

Program3.cpp

输出

The value of x is: 6

使用赋值运算符将一种数据类型转换为另一种数据类型的程序

让我们来看一个例子,在C++程序中使用赋值运算符将一个变量的数据类型转换为另一个变量。

Program4.cpp

输出

The value of int num1 is: 25
The value of float num2 is: 25.0