C++ 数学函数、头文件及布尔类型详解

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
可观测监控 Prometheus 版,每月50GB免费额度
应用实时监控服务-用户体验监控,每月100OCU免费额度
简介: C++ 支持数学操作,如`max`和`min`函数找最大值和最小值,以及`<cmath>`库中的`sqrt`、`round`等数学函数。`bool`类型用于布尔逻辑,取值`true`(1)或`false`(0)。布尔表达式结合比较运算符常用于条件判断,例如在`if`语句中检查年龄是否达到投票年龄。在代码示例中,`isCodingFun`和`isFishTasty`变量分别输出1和0。

C++ 数学

C++ 有许多函数可以让您在数字上执行数学任务。

最大值和最小值

max(x, y) 函数可用于找到 x 和 y 的最大值:

示例

cout << max(5, 10);

min(x, y) 函数可用于找到 x 和 y 的最小值:

示例

cout << min(5, 10);

C++ <cmath> 头文件

其他函数,例如 sqrt(平方根)、round(四舍五入)和 log(自然对数),可以在 <cmath> 头文件中找到:

示例

// 包含 cmath 库
#include <cmath>

cout << sqrt(64);
cout << round(2.6);
cout << log(2);

其他数学函数
以下是来自 <cmath> 库的其他流行数学函数列表:

函数 描述
abs(x) 返回 x 的绝对值
acos(x) 返回 x 的反余弦值
asin(x) 返回 x 的反正弦值
atan(x) 返回 x 的反正切值
cbrt(x) 返回 x 的立方根
ceil(x) 将 x 的值四舍五入为最接近的整数
cos(x) 返回 x 的余弦值
cosh(x) 返回 x 的双曲余弦值
exp(x) 返回 e 的 x 次方的值
expm1(x) 返回 e 的 x 次方的值减 1
fabs(x) 返回浮点数 x 的绝对值
fdim(x, y) 返回 x 和 y 之间的正差值
floor(x) 将 x 的值向下舍入到最接近的整数
hypot(x, y) 返回 sqrt(x²+y²) 而不会发生中间溢出或下溢
fma(x, y, z) 在不失去精度的情况下返回 x*y+z
fmax(x, y) 返回浮点数 x 和 y 中的最高值
fmin(x, y) 返回浮点数 x 和 y 中的最低值
fmod(x, y) 返回 x/y 的浮点余数
pow(x, y) 返回 x 的 y 次幂的值
sin(x) 返回 x 的正弦值(x 以弧度表示)
sinh(x) 返回双精度值 x 的双曲正弦值
tan(x) 返回角度的正切值
tanh(x) 返回双精度值的双曲正切值

C++ 布尔类型

在编程中,经常需要一个只能拥有两个值之一的数据类型,比如:

  • 是 / 否
  • 打开 / 关闭
  • 真 / 假

为此,C++ 提供了一个 bool 数据类型,它可以取 true(1)或 false(0)的值。

布尔值

布尔变量由 bool 关键字声明,只能取 truefalse 的值:

示例

bool isCodingFun = true;
bool isFishTasty = false;
cout << isCodingFun;  // 输出 1(true)
cout << isFishTasty;  // 输出 0(false)

从上面的示例中,您可以看出 true 值返回 1,false 返回 0。

但是,通过比较值和变量来返回布尔值更为常见(请参见下一页)。

C++ 布尔表达式

布尔表达式返回一个布尔值,要么是 1(true),要么是 0(false)。

这对于构建逻辑和找到答案很有用。

您可以使用比较运算符,例如大于(>)运算符,来判断表达式(或变量)是否为 true 或 false:

示例

int x = 10;
int y = 9;
cout << (x > y); // 返回 1(true),因为 10 比 9 更大

甚至更简单:

示例

cout << (10 > 9); // 返回 1(true),因为 10 比 9 更大

在下面的示例中,我们使用等于(==)运算符来评估一个表达式:

示例

int x = 10;
cout << (x == 10);  // 返回 1(true),因为 x 的值等于 10

示例

cout << (10 == 15);  // 返回 0(false),因为 10 不等于 15

现实生活示例

让我们考虑一个“现实生活示例”,在这个示例中,我们需要找出一个人是否足够年龄投票。

在下面的示例中,我们使用 >= 比较运算符来判断年龄(25)是否大于等于投票年龄限制,这个限制被设置为 18:

示例

int myAge = 25;
int votingAge = 18;

cout << (myAge >= votingAge); // 返回 1(true),意味着 25 岁的人可以投票!

很酷,不是吗?一个更好的方法(因为我们现在在进行中),是将上面的代码包装在 if...else 语句中,这样我们就可以根据结果执行不同的操作:

示例

如果 myAge 大于或等于 18,则输出“足够年龄投票!”。否则输出“不足年龄投票。”:

int myAge = 25;
int votingAge = 18;

if (myAge >= votingAge) {
   
  cout << "足够年龄投票!";
} else {
   
  cout << "不足年龄投票。";
}

// 输出:足够年龄投票!

布尔类型是所有 C++ 比较和条件的基础。

填写缺失部分以打印值 1(表示 true)和 0(表示 false):

bool isCodingFun = true;
bool isFishTasty = false;
cout << isCodingFun;
cout << isFishTasty;

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎点赞、收藏、关注

相关文章
|
28天前
|
自然语言处理 编译器 Linux
告别头文件,编译效率提升 42%!C++ Modules 实战解析 | 干货推荐
本文中,阿里云智能集团开发工程师李泽政以 Alinux 为操作环境,讲解模块相比传统头文件有哪些优势,并通过若干个例子,学习如何组织一个 C++ 模块工程并使用模块封装第三方库或是改造现有的项目。
|
1月前
|
程序员 C++ 容器
在 C++中,realloc 函数返回 NULL 时,需要手动释放原来的内存吗?
在 C++ 中,当 realloc 函数返回 NULL 时,表示内存重新分配失败,但原内存块仍然有效,因此需要手动释放原来的内存,以避免内存泄漏。
|
1月前
|
存储 前端开发 C++
C++ 多线程之带返回值的线程处理函数
这篇文章介绍了在C++中使用`async`函数、`packaged_task`和`promise`三种方法来创建带返回值的线程处理函数。
48 6
|
1月前
|
C++
C++ 多线程之线程管理函数
这篇文章介绍了C++中多线程编程的几个关键函数,包括获取线程ID的`get_id()`,延时函数`sleep_for()`,线程让步函数`yield()`,以及阻塞线程直到指定时间的`sleep_until()`。
25 0
C++ 多线程之线程管理函数
|
1月前
|
编译器 C语言 C++
详解C/C++动态内存函数(malloc、free、calloc、realloc)
详解C/C++动态内存函数(malloc、free、calloc、realloc)
191 1
|
1月前
|
编译器 C语言 C++
C++入门6——模板(泛型编程、函数模板、类模板)
C++入门6——模板(泛型编程、函数模板、类模板)
46 0
C++入门6——模板(泛型编程、函数模板、类模板)
|
1天前
|
存储 编译器 C语言
【c++丨STL】string类的使用
本文介绍了C++中`string`类的基本概念及其主要接口。`string`类在C++标准库中扮演着重要角色,它提供了比C语言中字符串处理函数更丰富、安全和便捷的功能。文章详细讲解了`string`类的构造函数、赋值运算符、容量管理接口、元素访问及遍历方法、字符串修改操作、字符串运算接口、常量成员和非成员函数等内容。通过实例演示了如何使用这些接口进行字符串的创建、修改、查找和比较等操作,帮助读者更好地理解和掌握`string`类的应用。
14 2
|
8天前
|
存储 编译器 C++
【c++】类和对象(下)(取地址运算符重载、深究构造函数、类型转换、static修饰成员、友元、内部类、匿名对象)
本文介绍了C++中类和对象的高级特性,包括取地址运算符重载、构造函数的初始化列表、类型转换、static修饰成员、友元、内部类及匿名对象等内容。文章详细解释了每个概念的使用方法和注意事项,帮助读者深入了解C++面向对象编程的核心机制。
33 5
|
14天前
|
存储 编译器 C++
【c++】类和对象(中)(构造函数、析构函数、拷贝构造、赋值重载)
本文深入探讨了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值重载。构造函数用于对象的初始化,析构函数用于对象销毁时的资源清理,拷贝构造函数用于对象的拷贝,赋值重载用于已存在对象的赋值。文章详细介绍了每个函数的特点、使用方法及注意事项,并提供了代码示例。这些默认成员函数确保了资源的正确管理和对象状态的维护。
46 4
|
15天前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
43 4