4.12 — 类型转换和 static_cast 简介
隐式类型转换 考虑以下程序: #include <iostream> void print(double x) // print 接收一个 double 参数 { std::cout << x << ‘\n’; } int main() { print(5); // 当我们传递一个 int 值时会发生什么? return 0; } 在上面的示例中,print() 函数有一个 …
隐式类型转换 考虑以下程序: #include <iostream> void print(double x) // print 接收一个 double 参数 { std::cout << x << ‘\n’; } int main() { print(5); // 当我们传递一个 int 值时会发生什么? return 0; } 在上面的示例中,print() 函数有一个 …
什么是 C++20? 2020 年 2 月,ISO(国际标准化组织)批准了 C++ 的新版本,称为 C++20。C++20 包含了自 C++11 以来对该语言最大的改动。C++20 的新改进 为了您的兴趣,这里列出了 C++20 添加的主要更改。请注意,…
在上一课中 (),我们介绍了函数模板,并将普通 max() 函数转换为 max<T> 函数模板: template <typename T> T max(T x, T y) { return (x < y) ? y : x; } 在本课中,我们将重点介绍函数模板的用法。使用 …
能走到这里很棒。标准转换规则相当复杂——如果您不理解每个细微差别,请不要担心。章节回顾 将值从一种数据类型转换为另一种数据类型称为 .(也称为 或 )在任何时候都会执行 …
在第 课中,我们编写了一个函数模板来计算两个值的最大值: #include <iostream> template <typename T> T max(T x, T y) { return (x < y) ? y : x; } int main() { std::cout << max(1, 2) << ‘\n’; // 将实例化 max(int, int) std::cout …
考虑以下程序: int add(int x, int y) { return x + y; } 当此函数编译时,编译器将确定 x + y 评估为 int,然后确保返回值的类型与函数的声明返回类型匹配(或 …
在第 课中,我们讨论了如何根据运算符的优先级和结合性来评估表达式。考虑以下表达式: int x { 2 + 3 }; 二元运算符 + 给出两个操作数,都属于 int 类型。由于两个操作数都属于相同类型,因此该类型将 …
在上一课中 (),我们讨论了数值提升,即将特定的较窄数值类型转换为可以高效处理的较宽数值类型(通常是 int 或 double)。C++ 支持另一类数值类型转换,称为 。这些数值转换涵盖了基本类型之间的其他类型转换。…