首页 > 编程语言 >C++学习笔记八:极限和数学运算<limits><cmath>

C++学习笔记八:极限和数学运算<limits><cmath>

时间:2023-12-12 18:14:45浏览次数:39  
标签:std lowest 运算 min int max 笔记 range C++

1) <limits>库:

1.1 源文档:

https://en.cppreference.com/w/cpp/types/numeric_limits

#include <limits>

 

1.2 库函数:

函数解释:

对于一个浮点数,lowest表示最小的可表示的负数,min表示最小的可表示的接近0的数,max表示最大的可表示的正数

对于一个有符号整数,min表示可以表示的最小的负数,max表示可以表示的最大的证书

std::cout << "The range for short is from " << std::numeric_limits<short>::min() << " to " 
    << std::numeric_limits<short>::max() << std::endl;
std::cout << "The range for unsigned short is from " << std::numeric_limits<unsigned short>::min() << " to " 
    << std::numeric_limits<unsigned short>::max() << std::endl;
std::cout << "The range for int is from " << std::numeric_limits<int>::min() << " to " 
    << std::numeric_limits<int>::max() << std::endl;
std::cout << "The range for unsigned int is from " << std::numeric_limits<unsigned int>::min() << " to " 
    << std::numeric_limits<unsigned int>::max() << std::endl;
std::cout << "The range for long is from " << std::numeric_limits<long>::min() << " to " 
    << std::numeric_limits<long>::max() << std::endl;
std::cout << "The range for float is from " << std::numeric_limits<float>::min() << " to " 
    << std::numeric_limits<float>::max() << std::endl;
std::cout << "The range(with lowest) for float is from " << std::numeric_limits<float>::lowest() << " to " 
    << std::numeric_limits<float>::max() << std::endl;
std::cout << "The range(with lowest) for double is from " << std::numeric_limits<double>::lowest() << " to " 
    << std::numeric_limits<double>::max() << std::endl;
std::cout << "The range(with lowest) for long double is from " << std::numeric_limits<long double>::lowest() << " to " 
    << std::numeric_limits<long double>::max() << std::endl;

//Other facilities
//More info : https://en.cppreference.com/w/cpp/types/numeric_limits
std::cout << "int is signed : " << std::numeric_limits<int>::is_signed << std::endl;
std::cout << "int digits : " << std::numeric_limits<int>::digits << std::endl; //digits is the number of digits in base-radix that can be represented by the type T without change. For integer types, this is the number of bits not counting the sign bit and the padding bits

输出结果:

The range for short is from -32768 to 32767
The range for unsigned short is from 0 to 65535
The range for int is from -2147483648 to 2147483647
The range for float is from 1.17549e-38 to 3.40282e+38
The range(with lowest) for float is from -3.40282e+38 to 3.40282e+38
The range(with lowest) for double is from -1.79769e+308 to 1.79769e+308      
The range(with lowest) for long double is from -1.18973e+4932 to 1.18973e+4932
int is signed : 1
int digits : 31

 

2)<cmath>库

2.1 源文档:

https://en.cppreference.com/w/cpp/header/cmath

 

2.2 部分库函数:

std::abs(): 绝对值

std::exp(): e的乘方

std::pow(a,b): a的b次方

std::log(): e的对数

std::log10(): 10的对数

std::sqrt(): 开平方根

std::round(): 四舍五入

三角函数(单位是弧度制):sin(), sinf(float num), sinl(long double number)

 

2.3 对char类型和short int类型的数学计算:

编译器无法处理小于4bytes的数据的计算,char类型占据1 Byte,short int类型占据2 Bytes, 在进行运算时会自动转换为int类型

short int var1 {10}; // 2 bytes
short int var2 {20};

char var3 {40}; //1
char var4 {50};

std::cout << "size of var1 : " << sizeof(var1) << std::endl;
std::cout << "size of var2 : " << sizeof(var2) << std::endl;
std::cout << "size of var3 : " << sizeof(var3) << std::endl;
std::cout << "size of var4 : " << sizeof(var4) << std::endl;

auto result1 = var1 + var2 ;
auto result2 = var3 + var4;

std::cout << "size of result1 : " << sizeof(result1) << std::endl; // 4
std::cout << "size of result2 : " << sizeof(result2) << std::endl; // 4

 

标签:std,lowest,运算,min,int,max,笔记,range,C++
From: https://www.cnblogs.com/zspaiprogram/p/17897507.html

相关文章

  • 12.12邻接表存储实现图的深度优先遍历(c++)
    今天学习了数据结构中的邻接表存储实现图的深度优先遍历,其中让我受益匪浅,以下是我的解题思路。编写程序,实现由邻接表存储实现无向图的深度优先搜索遍历的功能。顶点为字符型。输入格式:第一行输入顶点个数及边的个数,第二行依次输入各顶点,第三行开始依次输入边的两个顶点,用空格......
  • 进/线/协程--引自阿秀的学习笔记
    进程、线程与协程区别1、进程是资源分配的基本单位,运行一个可执行程序会创建一个或多个进程,进程就是运行起来的可执行程序2、线程是资源调度的基本单位,也是程序执行的基本单位,是轻量级的进程。每个进程中都有唯一的主线程,且只能有一个,主线程和进程是相互依存的关系,主线程结束进......
  • 2023年的PHP项目部署笔记。什么?还有人用PHP?
    前言这是我第一次用PHP的包管理工具composer一开始用docker进行部署,但一直出问题,最后还是选择直接在服务器上安装php-fpm搭配nginx的方案了。PS:docker方式真的搞得心好累,现在回想起来还心有余悸......
  • 12.11 迪杰斯特拉方法实现最短路径(c++)
     今天通过自主学习,,对数据结构中的迪杰斯特拉方法实现最短路径进行了深造,让我学会了很多新的东西。首先是问题描述:用迪杰斯特拉算法实现有向网的最短路径输入格式:第一行输入有向网的顶点和边数,第二行输入各顶点值,用空格间隔,第三行开始输入各条边的两个点的及边上的权值,用空......
  • C++ Qt开发:SpinBox数值微调框组件
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QSpinBox精度数值组件的常用方法及灵活运用。QSpinBox是Qt框架中的一个部件(Widget),用于提供一个方......
  • 《构建之法》读书笔记(一)
      最近看了《构建之法》这本书,我从书中获取到了许多关于软件工程这一方面的知识。  软件企业=软件+商业模式。对于软件工程以及行业,程序是基本功,但是在算法和数据结构之上,软件工程决定了软件的质量,商业模式,影响了一个软件企业的成败,同时软件从业人员和软件企业的道德操......
  • 学习C++算法入门第二天
    头文件#include<iostream> i=input,o=outputusingnamespacestd;头文件函数:https://blog.csdn.net/qq_32699009/article/details/104615792参考这个HelloWorld!---C学过,第一次接触C++,开启新的语言学习cin>>输入;cout<<输出<<endl; 啥是闰年?---非整百年:能被4整除的为闰......
  • 【论文阅读笔记】【OCR-文本识别】 SEED: Semantics Enhanced Encoder-Decoder Framew
    SEEDCVPR2020读论文思考的问题论文试图解决什么问题?写作背景是什么?问题:如何利用全局的语义信息提高文本识别模型对低质量文本的鲁棒性和识别效果?背景:以往的基于encoder-decoder的文本识别方法通常基于局部的视觉特征解码出文本,忽略了对单词显式的全局语义信息的......
  • 《Effective Java》阅读笔记-第五章
    EffectiveJava阅读笔记第五章泛型第26条不要使用原生类型随着泛型的普及,这条没什么可说的。如果不知道具体类型,可以使用<?>来代替。第27条消除unchecked警告原生类型到泛型转换时,编译会有警告,可以使用@SuppressWarnings("unchecked")来消除警告。并且应该在尽可......
  • 秦疆的Java课程笔记:65 面向对象 创建对象内存分析
    先写两个类//创建一个Pet类==============================packageOOP.demo;publicclassPet{publicStringname;publicintage;publicvoidshout(){System.out.println("喵~~");}}//主程序Application================......