C++ 类型转换2025年03月17日 | 阅读 9 分钟 本节将讨论 C++ 编程语言中变量的类型转换。类型转换是指在程序中将一种数据类型转换为另一种数据类型。类型转换可以通过两种方式进行:自动由编译器完成,或由程序员或用户手动完成。类型转换也称为类型转换。 ![]() 例如,假设给定的数据是整数类型,而我们想将其转换为浮点类型。因此,我们需要手动将 int 数据类型转换为 float 类型,这种类型的转换称为 C++ 中的类型转换。 2nd 示例 类型转换分为两种类型:隐式转换或隐式类型转换,以及显式类型转换或显式类型转换。 隐式类型转换或隐式类型转换
注意:隐式类型转换应从低数据类型到高数据类型进行。否则,它会影响基本数据类型,可能导致精度或数据丢失,并且编译器可能会为此发出警告。用于 C++ 隐式类型转换的程序 让我们创建一个示例来演示在 C++ 中使用隐式类型转换将一个变量转换为另一个变量。 输出 Implicit Type Casting The value of x: 200 The value of y: 200 Type casting char to int data type ('a' to 20): 117 Type casting from int data to float type: 85 在上面的程序中,我们声明了一个 short 数据类型的变量 x,值为 200,以及一个 int 变量 y。之后,我们将 x 的值赋给 y,然后编译器会自动将 short 数据类型的值 x 转换为 y,返回 y 为 200。 在接下来的表达式中,我们声明了一个 int 类型变量 num,值为 20,以及一个 char 类型变量 ch,值为 'a',它等效于整数值 97。然后,我们将这两个变量相加执行隐式转换,表达式的结果为 117。 类似地,在第三个表达式中,我们将 int 变量 num(值为 20)和 char 变量 ch(值为 65)相加,然后将结果赋给 float 变量 val。因此,表达式的结果会自动由编译器转换为 float 类型。 显式类型转换或显式类型转换
显式类型转换的语法 type:表示要转换给定表达式的用户定义数据。 expression:表示要转换数据类型的常量值、变量或表达式。 例如,我们有一个浮点数为 4.534,要将其转换为整数值,语句如下: 当执行上述语句时,浮点值将使用 cast() 运算符转换为整数数据类型。然后,将浮点值赋给整数 num,它会截断小数部分,只显示整数值 4。 演示 C++ 中显式类型转换用法的程序 让我们创建一个简单的程序,使用 C++ 编程语言中的显式类型转换将一种类型变量转换为另一种类型。 输出 Implicit Type Casting: Result: 4 Explicit Type Casting: The value of float variable (res): 4.2 在上面的程序中,我们有两个整数变量 a 和 b,其值分别为 21 和 2。然后,将 a 除以 b (21/2),返回一个 int 类型的值 4。 在第二个表达式中,我们声明了一个 float 类型变量 res,它使用显式类型转换方法中的 cast 运算符存储 a 和 b 的结果,而不会丢失任何数据。 通过 cast 运算符将 double 数据转换为 int 和 float 类型的程序 让我们考虑一个示例,在 C++ 编程中通过将 double 数据转换为 float 和 int 类型来获取矩形的面积。 输出 The length of the rectangle is: 57.3456 The breadth of the rectangle is: 12.9874 The area of the rectangle is: 740 The length of the rectangle is: 57.3456 The breadth of the rectangle is: 12.9874 The area of the rectangle is: 744.77 一些不同类型的类型转换 在类型转换中,有一个 cast 运算符,它根据程序的需要强制将一种数据类型转换为另一种数据类型。C++ 有四种不同类型的 cast 运算符。
Static Cast static_cast 是一种简单的编译时转换,用于将一种数据类型转换为另一种。这意味着它不会在运行时检查数据类型是否转换有效。因此,程序员或用户有责任确保转换安全有效。 static_cast 能够执行隐式转换所执行的所有转换。它还执行相关类指针之间的转换(向上转换 - > 从派生类到基类,或向下转换 - > 从基类到派生类)。 Static Cast 的语法 演示 Static Cast 用法的程序 让我们创建一个简单的示例,在 C++ 编程中使用类型转换的 static cast。 输出 Before using the static cast: The value of l = 39.375 After using the static cast: The value of tot = 39 Dynamic Cast dynamic_cast 是一种运行时转换运算符,用于仅在类指针和引用上执行一种类型变量到另一种类型的转换。这意味着它在运行时检查变量是否可以有效转换,如果转换失败,则返回 NULL 值。动态转换基于 RTTI(运行时类型识别)机制。 演示 C++ 中 Dynamic Cast 用法的程序 让我们创建一个简单的程序来执行 C++ 编程语言中的 dynamic_cast。 输出 Dynamic casting is done successfully. Reinterpret Cast 类型 reinterpret_cast 类型转换用于将指针转换为任何其他类型的指针,无论给定指针是否属于彼此。这意味着它不检查指针或指针指向的数据是否相同。它还将指针转换为整数类型或反之亦然。 reinterpret_cast 类型的语法 在 C++ 中使用 Reinterpret Cast 的程序 让我们编写一个程序来演示在 C++ 语言中使用 reinterpret 进行指针转换。 输出 The value of pt: 0x5cfed0 The value of ch: A The value of *ptr: 65 The value of *ch: A Const Cast const_cast 用于更改或操作源指针的 const 行为。这意味着我们可以通过两种方式执行 const:将 const 指针设置为非 const 指针,或删除 const 指针的 const。 Const Cast 类型的语法 在 C++ 中使用 Const Cast 的程序 让我们编写一个程序,使用 const_cast 在 C++ 中将源指针转换为非 const 指针。 输出 The value of ptr cast: 500 下一主题C++ 中的二进制运算符重载 |
在组合数学和计算机科学中,稳定婚姻问题是一个著名的谜题。它涉及在两组元素(例如男性和女性)之间建立稳定匹配,其中每个人对构成另一组的个体都有不同的偏好。如果...
阅读 4 分钟
在 C++11 中,引入的一个重要特性是可以使用函数的尾随返回类型。在 C++11 之前,函数的返回类型必须在函数名之前指定。但是,尾随返回类型允许您指定返回...
阅读 4 分钟
在本文中,我们将讨论友元函数和虚函数之间的区别。但在讨论它们的区别之前,我们必须了解 C++ 中的友元函数和虚函数。什么是友元函数?在 C++ 编程语言中,友元函数是...
5 分钟阅读
在本文中,我们将描述 C++ 中的可折叠二叉树。在 C++ 中,可折叠二叉树是一种树形数据结构,其中每个节点的左右子树都呈镜像对称。如果可以折叠,则左右子树应具有相同的结构...
5 分钟阅读
Chrono 是一个 C++ 头文件,包含一组与时间相关的类和方法。它是 C++ 标准模板库 (STL) 的一部分,并且与 C++11 及更高版本一起包含。< Chro no> 支持三种时钟:system_clock、steady_clock 和 high_resolution_clock。这些时钟被用来...
阅读 3 分钟
在本文中,我们将讨论一个用于生成长度为 n 的 Lyndon 单词的 C++ 程序。在进行实现之前,我们必须了解 Lyndon 单词。什么是 Lyndon 单词?Lyndon 单词是字符串,它们非空且具有比自身更小的词典顺序的特征...
阅读 4 分钟
C++ 中的 Kruskal 算法树在计算机科学和数据结构领域对于有效地组织和管理数据至关重要。在实际应用中,树是用于描述各种连接和层次结构的层次结构。它们是计算机科学的基石...
11 分钟阅读
在 C++ 中,多线程是一种强大的技术,程序被分解为称为线程的执行单元。多线程允许 CPU 或多核处理器的单个核心同时运行多个线程。C++ 中的编程使应用程序能够...
阅读 12 分钟
问题规定,我们给定一个整数 X 和一个行和列都排序的矩阵。我们必须确定给定的数字“X”是否在此矩阵中找到;如果找到,则显示 X 的确切位置;如果未找到,则输出...
阅读 4 分钟
Set 是 C++ 中一种类似于数学中集合概念的容器。Set 与其他容器的不同之处在于它只包含不同的元素,并且可以按排序顺序进行遍历。对 Set 的良好理解对于...
阅读 6 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India