当前位置: 首页 > news >正文

Android常用C++特性之std::abs

声明:本文内容生成自ChatGPT,目的是为方便大家了解学习作为引用到作者的其他文章中。

std::abs 是 C++ 标准库中的一个函数,用于计算整数、浮点数或其他数值类型的绝对值。它返回一个值,该值是参数的非负数形式,即去掉负号的值。如果参数是正数或零,std::abs 直接返回该值。

C++ 标准库中的 std::abs 有多个重载版本,用于处理不同类型的参数。

语法

#include <cstdlib>    // 对于整数类型
#include <cmath>      // 对于浮点数和其他数学函数// 整数类型
int abs(int n);
long abs(long n);
long long abs(long long n);// 浮点数类型
float fabs(float n);
double fabs(double n);
long double fabs(long double n);

返回值

  • 如果参数为负数,则返回其相反数,即该数的绝对值。
  • 如果参数为正数或 0,则返回该值本身。

示例

1. 计算整数的绝对值
#include <iostream>
#include <cstdlib>  // 用于 std::absint main() {int x = -10;int y = 5;std::cout << "Absolute value of x: " << std::abs(x) << std::endl;std::cout << "Absolute value of y: " << std::abs(y) << std::endl;return 0;
}

输出:

Absolute value of x: 10
Absolute value of y: 5
2. 计算浮点数的绝对值

对于浮点数,使用 std::fabs 函数。

#include <iostream>
#include <cmath>  // 用于 std::fabsint main() {double a = -3.14;double b = 2.71;std::cout << "Absolute value of a: " << std::fabs(a) << std::endl;std::cout << "Absolute value of b: " << std::fabs(b) << std::endl;return 0;
}

输出:

Absolute value of a: 3.14
Absolute value of b: 2.71
3. std::abs 处理长整型

std::abs 也可以处理 longlong long 类型的整数。

#include <iostream>
#include <cstdlib>  // 用于 std::absint main() {long x = -1000000L;long long y = -10000000000LL;std::cout << "Absolute value of x: " << std::abs(x) << std::endl;std::cout << "Absolute value of y: " << std::abs(y) << std::endl;return 0;
}

输出:

Absolute value of x: 1000000
Absolute value of y: 10000000000

注意事项

  • 对于整数类型,std::abs 可以处理 int, long, 和 long long 类型。
  • 对于浮点数类型,使用 std::fabs 来处理 float, double, 和 long double 类型。
  • 对于自定义的数值类型(如 std::complex),C++ 也提供了相应的绝对值计算函数(如 std::abs 专用于 std::complex)。

总结

  • std::abs 主要用于计算整数的绝对值。
  • 对于浮点数类型,应使用 std::fabs 进行绝对值计算。
  • 支持不同的数值类型重载,如 int, long, long long, float, double 等。

相关文章:

  • STM32 map 文件浅析
  • 互联网前后端分离的开发场景,一般会员和数据权限的判断是放在前端还是后端?
  • 二叉树进阶oj题【二叉树相关10道oj题的解析和c++代码实现】
  • 2024.09.19 校招 实习 内推 面经
  • 简单vue指令实现 el-table 可拖拽表格功能
  • Java 图片合成
  • Unity3D 客户端多开
  • 5个python多线程简单示例
  • 一次实践:给自己的手机摄像头进行相机标定
  • 用于视觉的MetaFormer基线模型
  • 数据结构-4.1.特殊矩阵的压缩存储
  • C++11 多线程编程-小白零基础到手撕线程池
  • 秋招内推--招联金融2025
  • 论文阅读:多模态医学图像融合方法的研究进展
  • 负载均衡架构解说
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 《Java编程思想》读书笔记-对象导论
  • Centos6.8 使用rpm安装mysql5.7
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • golang 发送GET和POST示例
  • JAVA SE 6 GC调优笔记
  • java 多线程基础, 我觉得还是有必要看看的
  • Java编程基础24——递归练习
  • Java读取Properties文件的六种方法
  • PHP CLI应用的调试原理
  • python3 使用 asyncio 代替线程
  • Python中eval与exec的使用及区别
  • Rancher如何对接Ceph-RBD块存储
  • spring学习第二天
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • vue-router 实现分析
  • WebSocket使用
  • Web标准制定过程
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 一些css基础学习笔记
  • 中文输入法与React文本输入框的问题与解决方案
  • Linux权限管理(week1_day5)--技术流ken
  • 阿里云服务器购买完整流程
  • #{} 和 ${}区别
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • (02)vite环境变量配置
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (一)SvelteKit教程:hello world
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • (转)3D模板阴影原理
  • ./configure,make,make install的作用
  • .NET BackgroundWorker
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .Net 基于.Net8开发的一个Asp.Net Core Webapi小型易用框架
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • [ 云计算 | Azure 实践 ] 在 Azure 门户中创建 VM 虚拟机并进行验证