C++数值类型极限值的获取

2024-06-06 21:58

本文主要是介绍C++数值类型极限值的获取,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

C/C++中基本类型的数值极限值一般来说都是与具体平台有关的,在程序设计的过程中为了写出与平台无关的程序则必须通过合理科学的方法去获取各种类型的极值,常用的获取方法有两种:一种是传统的C语言所采用的预处理器常数,另一种方法则是通过标准库中所提供的模版类numeric_limits<>来获取这些极值。

下面先详解其用法后再评其优劣:

一、传统C语言的预处理器常数

在C++中这些C语言的预处理器常数任然可以用,一般对于各种基本固有类型的最大值宏为:

INT_MAX、FLT_MAX、DBL_MAX、SHRT_MAX、CHAR_MAX. . . . . 

分别对应int、float、double、short、char、、、的最大值,其他类型都有类似形式的宏

最小值宏为:

INT_MIN、FLT_MIN、DBL_MIN、SHRT_MIN、CHAR_MIN. . . . . 

分别对应int、float、double、short、char、、、的最小值,其他类型都有类似形式的宏


二、标准库template numeric_limits<>

numeric_limits<>是一个模版类,它是有一个通用模版和一系列各种类型的特化模版组成,在该模版类中常用的几个数据成员和成员函数如下:

is_specialized 该类型是否存在极值

is_signed 该类型是否带有正负号

min() 获取最小值

max() 获取最大值


具体应用示例代码如下:

#include<iostream>
#include<string>
using namespace std;
int main()
{
//传统C语言的数值极限cout<<"int:MAX()  "<<INT_MAX<<endl;cout<<"int:MIN()  "<<INT_MIN<<endl;cout<<"float:MAX()  "<<FLT_MAX<<endl;cout<<"float:MIN()  "<<FLT_MIN<<endl;cout<<"double:MAX()  "<<DBL_MAX<<endl;cout<<"double:MIN()  "<<DBL_MIN<<endl;cout<<"short:MAX()  "<<SHRT_MAX<<endl;cout<<"short:MIN()  "<<SHRT_MIN<<endl;//采用模版类numeric_limits<>的方式获取极值cout<<"int:MAX()  "<<numeric_limits<int>::max()<<endl;cout<<"int:MIN()  "<<numeric_limits<int>::min()<<endl;cout<<"float:MAX()  "<<numeric_limits<float>::max()<<endl;cout<<"float:MIN()  "<<numeric_limits<float>::min()<<endl;cout<<"double:MAX()  "<<numeric_limits<double>::max()<<endl;cout<<"double:MIN()  "<<numeric_limits<double>::min()<<endl;cout<<"short:MAX()  "<<numeric_limits<short>::max()<<endl;cout<<"short:MIN()  "<<numeric_limits<short>::min()<<endl;//判断是否存在极值cout<<"string类型是否存在极值:"<<numeric_limits<string>::is_specialized<<endl;
}//输出结果如下:
int:MAX()  2147483647
int:MIN()  -2147483648
float:MAX()  3.40282e+038
float:MIN()  1.17549e-038
double:MAX()  1.79769e+308
double:MIN()  2.22507e-308
short:MAX()  32767
short:MIN()  -32768
int:MAX()  2147483647
int:MIN()  -2147483648
float:MAX()  3.40282e+038
float:MIN()  1.17549e-038
double:MAX()  1.79769e+308
double:MIN()  2.22507e-308
short:MAX()  32767
short:MIN()  -32768
string类型是否存在极值:0
请按任意键继续. . .

简评:做为拥有优秀代码风格的程序员来说最好的选择方式应该还是用标准库的 template numeric_limits<>会比较好,具体的理由是:一、相比C语言的预定义常数标准库的numeric_limits提供了更好的安全性;二、numeric_limits<>类可以说是一个各种类型信息的模版体系,更加规范,而且更重要的是程序员自己也可以通过为template numeric_limits增加特化版本而你自定义的数值类型增加类型信息,从而在编程时可以达到统一规范调用的效果。

这篇关于C++数值类型极限值的获取的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1037339

相关文章

Python获取C++中返回的char*字段的两种思路

《Python获取C++中返回的char*字段的两种思路》有时候需要获取C++函数中返回来的不定长的char*字符串,本文小编为大家找到了两种解决问题的思路,感兴趣的小伙伴可以跟随小编一起学习一下... 有时候需要获取C++函数中返回来的不定长的char*字符串,目前我找到两种解决问题的思路,具体实现如下:

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序

golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法

《golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法》:本文主要介绍golang获取当前时间、时间戳和时间字符串及它们之间的相互转换,本文通过实例代码给大家介绍的非常详细,感兴趣... 目录1、获取当前时间2、获取当前时间戳3、获取当前时间的字符串格式4、它们之间的相互转化上篇文章给大家介

Pydantic中Optional 和Union类型的使用

《Pydantic中Optional和Union类型的使用》本文主要介绍了Pydantic中Optional和Union类型的使用,这两者在处理可选字段和多类型字段时尤为重要,文中通过示例代码介绍的... 目录简介Optional 类型Union 类型Optional 和 Union 的组合总结简介Pyd

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

C/C++错误信息处理的常见方法及函数

《C/C++错误信息处理的常见方法及函数》C/C++是两种广泛使用的编程语言,特别是在系统编程、嵌入式开发以及高性能计算领域,:本文主要介绍C/C++错误信息处理的常见方法及函数,文中通过代码介绍... 目录前言1. errno 和 perror()示例:2. strerror()示例:3. perror(

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

C++变换迭代器使用方法小结

《C++变换迭代器使用方法小结》本文主要介绍了C++变换迭代器使用方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、源码2、代码解析代码解析:transform_iterator1. transform_iterat

详解C++中类的大小决定因数

《详解C++中类的大小决定因数》类的大小受多个因素影响,主要包括成员变量、对齐方式、继承关系、虚函数表等,下面就来介绍一下,具有一定的参考价值,感兴趣的可以了解一下... 目录1. 非静态数据成员示例:2. 数据对齐(Padding)示例:3. 虚函数(vtable 指针)示例:4. 继承普通继承虚继承5.

C++中std::distance使用方法示例

《C++中std::distance使用方法示例》std::distance是C++标准库中的一个函数,用于计算两个迭代器之间的距离,本文主要介绍了C++中std::distance使用方法示例,具... 目录语法使用方式解释示例输出:其他说明:总结std::distance&n编程bsp;是 C++ 标准