在C/C++11中,std::numeric_limits为模板类,在库编译平台提供基础算术类型的极值等属性信息,取代传统C语言,所采用的预处理常数。比较常用的使用是对于给定的基础类型用来判断在当前系统上的最大值、最小值。若使用此类,需包含<limits>头文件。它支持的基础算术类型包括如下:

min、max与C库宏常量的关系如下:

测试代码如下:

#include "numeric_limits.hpp"
#include <limits>
#include <iostream>//
/* reference:http://www.cplusplus.com/reference/limits/numeric_limits/https://msdn.microsoft.com/en-us/library/c707ct0t.aspx
*/
int test_numeric_limits_1()
{std::cout << std::boolalpha;std::cout << "Minimum value for int: " << std::numeric_limits<int>::min() << std::endl;std::cout << "Maximum value for int: " << std::numeric_limits<int>::max() << std::endl;std::cout << "int is signed: " << std::numeric_limits<int>::is_signed << std::endl;std::cout << "Non-sign bits in int: " << std::numeric_limits<int>::digits << std::endl;std::cout << "int has infinity: " << std::numeric_limits<int>::has_infinity << std::endl;std::cout << "Minimum value for float: " << std::numeric_limits<float>::min() << std::endl; // min returns the smallest positive value the type can encode, not the loweststd::cout << "Lowest value for float: " << std::numeric_limits<float>::lowest() << std::endl; // the lowest valuestd::cout << "Maximum value for float: " << std::numeric_limits<float>::max() << std::endl;std::cout << "float is signed: " << std::numeric_limits<float>::is_signed << std::endl;std::cout << "Non-sign bits in float: " << std::numeric_limits<float>::digits << std::endl;std::cout << "float has infinity: " << std::numeric_limits<float>::has_infinity << std::endl;std::cout << "Minimum value for unsigned short: " << std::numeric_limits<unsigned short>::min() << std::endl;std::cout << "Maximum value for unsigned short: " << std::numeric_limits<unsigned short>::max() << std::endl;std::cout << "is_specialized(float): " << std::numeric_limits<float>::is_specialized << std::endl;std::cout << "is_integer(float): " << std::numeric_limits<float>::is_integer << std::endl;std::cout << "is_exact(float): " << std::numeric_limits<float>::is_exact << std::endl;std::cout << "is_bounded(float): " << std::numeric_limits<float>::is_bounded << std::endl;std::cout << "is_modulo(float): " << std::numeric_limits<float>::is_modulo << std::endl;std::cout << "is_iec559(float): " << std::numeric_limits<float>::is_iec559 << std::endl;std::cout << "digits10(float): " << std::numeric_limits<float>::digits10 << std::endl;std::cout << "radix(float): " << std::numeric_limits<float>::radix << std::endl;std::cout << "min_exponent(float): " << std::numeric_limits<float>::min_exponent << std::endl;std::cout << "max_exponent(float): " << std::numeric_limits<float>::max_exponent << std::endl;std::cout << "min_exponent10(float): " << std::numeric_limits<float>::min_exponent10 << std::endl;std::cout << "max_exponent10(float): " << std::numeric_limits<float>::max_exponent10 << std::endl;std::cout << "epsilon(float): " << std::numeric_limits<float>::epsilon() << std::endl;std::cout << "round_style(float): " << std::numeric_limits<float>::round_style << std::endl;std::cout << "The smallest nonzero denormalized value for float: "<< std::numeric_limits<float>::denorm_min()<< std::endl;std::cout << "The difference between 1 and the smallest value greater than 1 for float: "<< std::numeric_limits<float>::epsilon()<< std::endl;std::cout << "Whether float objects allow denormalized values: "<< std::numeric_limits<float>::has_denorm << std::endl;std::cout << "Whether float objects can detect denormalized loss: "<< std::numeric_limits<float>::has_denorm_loss << std::endl;std::cout << "Whether float objects have quiet_NaN: "<< std::numeric_limits<float>::has_quiet_NaN << std::endl;std::cout << "Whether float objects have a signaling_NaN: "<< std::numeric_limits<float>::has_signaling_NaN << std::endl;std::cout << "The base for type float is:  "<< std::numeric_limits<float>::radix << std::endl;std::cout << "The maximum rounding error for type float is:  "<< std::numeric_limits<float>::round_error() << std::endl;std::cout << "The rounding style for a double type is: "<< std::numeric_limits<double>::round_style << std::endl;std::cout << "The signaling NaN for type float is:  "<< std::numeric_limits<float>::signaling_NaN() << std::endl;std::cout << "Whether float types can detect tinyness before rounding: "<< std::numeric_limits<float>::tinyness_before << std::endl;std::cout << "Whether float types have implemented trapping: "<< std::numeric_limits<float>::traps << std::endl;return 0;
}

在windows10 64位上执行结果如下:

GitHub:  https://github.com/fengbingchun/Messy_Test

C++/C++11中std::numeric_limits的使用相关推荐

  1. C++/C++11中std::string用法汇总

    C++/C++11中std::string是个模板类,它是一个标准库.使用string类型必须首先包含<string>头文件.作为标准库的一部分,string定义在命名空间std中. st ...

  2. C++11中std::async的使用

    C++11中的std::async是个模板函数.std::async异步调用函数,在某个时候以Args作为参数(可变长参数)调用Fn,无需等待Fn执行完成就可返回,返回结果是个std::future对 ...

  3. C++11中std::packaged_task的使用

    C++11中的std::packaged_task是个模板类.std::packaged_task包装任何可调用目标(函数.lambda表达式.bind表达式.函数对象)以便它可以被异步调用.它的返回 ...

  4. C++11中std::shared_future的使用

    C++11中的std::shared_future是个模板类.与std::future类似,std::shared_future提供了一种访问异步操作结果的机制:不同于std::future,std: ...

  5. C++11中std::future的使用

    C++11中的std::future是一个模板类.std::future提供了一种用于访问异步操作结果的机制.std::future所引用的共享状态不能与任何其它异步返回的对象共享(与std::sha ...

  6. 概率论中指数分布介绍及C++11中std::exponential_distribution的使用

    指数分布:在深度学习中,我们经常会需要一个在x=0点处取得边界点(sharp point)的分布.为了实现这一目的,我们可以使用指数分布(exponential distribution): p(x; ...

  7. 概率论中高斯分布(正态分布)介绍及C++11中std::normal_distribution的使用

    高斯分布:最常用的分布是正态分布(normal distribution),也称为高斯分布(Gaussian distribution): 正态分布N(x;μ,σ2)呈现经典的"钟形曲线&q ...

  8. 概率论中伯努利分布(bernoulli distribution)介绍及C++11中std::bernoulli_distribution的使用

    Bernoulli分布(Bernoulli distribution):是单个二值随机变量的分布.它由单个参数ø∈[0,1],ø给出了随机变量等于1的概率.它具有如下的一些性质: P(x=1)= ø ...

  9. C++11中std::condition_variable的使用

    <condition_variable>是C++标准程序库中的一个头文件,定义了C++11标准中的一些用于并发编程时表示条件变量的类与方法等. 条件变量是并发程序设计中的一种控制结构.多个 ...

最新文章

  1. emqx配置mysql认证_emqx使用mysql完成用户密码验证和ACL鉴权-Go语言中文社区
  2. SpringMVC详细示例实战教程
  3. STM32 IO口的八种模式使用小结
  4. 手机界面常见的的九宫格
  5. 华为专家助你1个月拿下物联网高工认证,首次提供全方位就业指导!
  6. mysql维护计划任务_浅谈MySQL event 计划任务
  7. Java 集合List、Set、HashMap操作一(Array转List、Set排序、HashMap遍历、Set遍历、List遍历、HashMap大小长度、List打乱顺序)
  8. SpringBoot迭代发布下的Jar瘦身实践
  9. mysql 中ak_数据库ak
  10. 无人机飞控系统的简单分析
  11. Linux BIOS开机自检简介
  12. 即时配送,对接闪送预下单接口,报“签名校验失败”
  13. 计算机漏洞安全相关的概念POC | EXP | VUL | CVE | 0DAY
  14. [人脸关键点检测] Wing loss 论文解读
  15. CSS 2D转换和源点的影响原理(translate、scale、skew、rotate)
  16. 计算机主机箱内的主要硬件有,电脑的基本硬件包括哪些
  17. 面试知识点梳理一:概率论和线性代数
  18. 四路抢答器c语言编程,基于单片机的四路抢答器设计
  19. 宏观结构分析之语篇模式视角
  20. 杨博超-spring教程-day01-笔记

热门文章

  1. UML学习:机房收费系统-类图
  2. 中国自动贴标机(打印和应用系统)市场趋势报告、技术动态创新及市场预测
  3. linux自动挂载文件修复工具,Linux FSCK自动修复文件系统
  4. Windows Phone 7 不温不火学习之《推送通知服务》
  5. 8051单片机的LCD1602使用
  6. 2022-2028全球相机液晶屏幕行业调研及趋势分析报告
  7. Springboot中使用log4j2_配置文件不生效问题
  8. 献给初学iOS的小盆友们------微博app项目开发之一项目初始化
  9. 直流无刷电机(BLDC)应用中如何检测MOS好坏
  10. 无线自组网技术衍生:北峰MESH无线自组网系统