C++ 类型转换
C++ 类型转换
在本教程中,我们将通过示例了解 C++ 类型转换的基础知识。
C++ 允许我们将一种类型的数据转换为另一种类型的数据。这称为类型转换。
C++中有两种类型转换。
- 隐式转换
- 显式转换(也称为类型转换)
隐式类型转换
由编译器自动完成的类型转换称为隐式类型转换。这种类型的转换也称为自动转换。
让我们看两个隐式类型转换的例子。
示例 1:从 int 到 double 的转换
// Working of implicit type-conversion
#include <iostream>
using namespace std;
int main() {
// assigning an int value to num_int
int num_int = 9;
// declaring a double type variable
double num_double;
// implicit conversion
// assigning int value to a double variable
num_double = num_int;
cout << "num_int = " << num_int << endl;
cout << "num_double = " << num_double << endl;
return 0;
}
输出
num_int = 9 num_double = 9
在程序中,我们分配了一个 int
数据到 double
变量。
num_double = num_int;
这里,int
值会自动转换为 double
在分配给 num_double 之前由编译器 多变的。这是一个隐式类型转换的例子。
示例 2:从 double 到 int 的自动转换
//Working of Implicit type-conversion
#include <iostream>
using namespace std;
int main() {
int num_int;
double num_double = 9.99;
// implicit conversion
// assigning a double value to an int variable
num_int = num_double;
cout << "num_int = " << num_int << endl;
cout << "num_double = " << num_double << endl;
return 0;
}
输出
num_int = 9 num_double = 9.99
在程序中,我们分配了一个 double
数据到 int
变量。
num_double = num_int;
这里,double
值会自动转换为 int
在分配给 num_int 之前由编译器 多变的。这也是隐式类型转换的一个例子。
注意: 自 int
不能有小数部分,上例中小数点后的数字会被截断。
转换过程中的数据丢失(缩小转换)
正如我们从上面的示例中看到的,从一种数据类型转换为另一种数据类型很容易导致数据丢失。当较大类型的数据转换为较小类型的数据时会发生这种情况。
<图>C++ 显式转换
当用户手动将数据从一种类型更改为另一种类型时,这称为显式转换 .这种类型的转换也称为类型转换 .
我们可以通过三种主要方式在 C++ 中使用显式转换。他们是:
- C 风格的类型转换(也称为 cast notation )
- 函数表示法(也称为旧 C++ 样式类型转换 )
- 类型转换运算符
C 风格类型转换
顾名思义,这种类型的转换受到 C 编程语言的青睐 .它也被称为 cast notation .
这种风格的语法是:
(data_type)expression;
例如,
// initializing int variable
int num_int = 26;
// declaring double variable
double num_double;
// converting from int to double
num_double = (double)num_int;
函数式转换
我们还可以使用符号之类的函数将数据从一种类型转换为另一种类型。
这种风格的语法是:
data_type(expression);
例如,
// initializing int variable
int num_int = 26;
// declaring double variable
double num_double;
// converting from int to double
num_double = double(num_int);
示例 3:类型转换
#include <iostream>
using namespace std;
int main() {
// initializing a double variable
double num_double = 3.56;
cout << "num_double = " << num_double << endl;
// C-style conversion from double to int
int num_int1 = (int)num_double;
cout << "num_int1 = " << num_int1 << endl;
// function-style conversion from double to int
int num_int2 = int(num_double);
cout << "num_int2 = " << num_int2 << endl;
return 0;
}
输出
num_double = 3.56 num_int1 = 3 num_int2 = 3
我们同时使用了 C 风格的类型转换 以及用于类型转换的函数式转换 并显示结果。因为它们执行相同的任务,所以都给我们相同的输出。
类型转换运算符
除了这两种类型转换之外,C++ 还有四个用于类型转换的运算符。它们被称为类型转换运算符 .他们是:
static_cast
dynamic_cast
const_cast
reinterpret_cast
我们将在以后的教程中了解这些演员表。
推荐教程:
- C++ 字符串转 int 反之亦然
- C++ 字符串转浮点、加倍,反之亦然
C语言