类型转换(第 1 部分)
本课属于 Coddy C++ 学习旅程的“基础知识”单元。第 14 课,共 74 课。
类型转换是将一个值从一种数据类型转换为另一种数据类型的过程。
在 C++ 中,我们可以将整数转换为双精度浮点数,将双精度浮点数转换为整数,等等。类型转换有两种:隐式(自动)转换和显式(手动)转换。
例如,Integer to Double:
隐式(自动)类型转换:
int number = 5;
double decimal = number; // 自动变为 5.0
// 进行计算
int x = 7;
double result = x / 2.0; // result 为 3.5注意:用两个 int 值相除时,C++ 会执行整数除法:小数部分会被舍弃。例如,7 / 2 的结果是 3,而不是 3.5。要得到小数结果,至少有一个操作数必须是 double(例如,7 / 2.0 的结果是 3.5)。
显式(手动)类型转换 Double to Integer:
double decimal = 9.7;
int number = (int) decimal; // 变成 9(小数部分被截去)
// 用于计算
double price = 19.99;
int roundedPrice = (int) price; // 变成 19现代 C++ 推荐的风格:与 C 风格的强制类型转换 (int) decimal 相比,最好使用 static_cast<>(),这样更安全,也能更明确地表达你的意图:
double decimal = 9.7;
int number = static_cast<int>(decimal); // 变为 9(小数部分被截去)
double price = 19.99;
int roundedPrice = static_cast<int>(price); // 变为 19注意:(int) value 和 static_cast<int>(value) 在这里都会产生相同的结果,但在现代 C++ 中,推荐使用 static_cast<>(),因为它能让类型转换清晰可见,并且会由编译器检查。
挑战
入门编写一个 C++ 程序来演示类型转换。完成以下操作:
将 price 变量转换为 int,并将结果存储在名为 intPrice 的新变量中。
亲手试试
int intPrice = ?; // 将 double 显式转换为 int
// 输出这些值
std::cout << "Price: " << price << std::endl;
std::cout << "Int Price: " << intPrice << std::endl;
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: C++ 在线编译器