C++中的limits.h和climits(C++基本数据类型的最值)

2024-03-28 12:48

本文主要是介绍C++中的limits.h和climits(C++基本数据类型的最值),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

昨天有同学问到有关C++里具体数值的问题,看到还是有一点点懵的,想想网上应该能找到相关资料吧,后来发现挺少的,其实在mingw(编译文件)里可以找到limits.h这个文件,具体信息如下:

/** limits.h* This file has no copyright assigned and is placed in the Public Domain.* This file is a part of the mingw-runtime package.* No warranty is given; refer to the file DISCLAIMER within the package.** Functions for manipulating paths and directories (included from io.h)* plus functions for setting the current drive.** Defines constants for the sizes of integral types.** NOTE: GCC should supply a version of this header and it should be safe to*       use that version instead of this one (maybe safer).**/#ifndef _LIMITS_H_
#define _LIMITS_H_/* All the headers include this file. */
#include <_mingw.h>/** File system limits** TODO: NAME_MAX and OPEN_MAX are file system limits or not? Are they the*       same as FILENAME_MAX and FOPEN_MAX from stdio.h?* NOTE: PATH_MAX is the POSIX equivalent for Microsoft's MAX_PATH; the two*       are semantically identical, with a limit of 259 characters for the*       path name, plus one for a terminating NUL, for a total of 260.*/
#define PATH_MAX    260/** Characteristics of the char data type.** TODO: Is MB_LEN_MAX correct?*/
#define CHAR_BIT    8
#define MB_LEN_MAX  2#define SCHAR_MIN   (-128)
#define SCHAR_MAX   127#define UCHAR_MAX   255/* TODO: Is this safe? I think it might just be testing the preprocessor,*       not the compiler itself... */
#if ('\x80' < 0)
#define CHAR_MIN    SCHAR_MIN
#define CHAR_MAX    SCHAR_MAX
#else
#define CHAR_MIN    0
#define CHAR_MAX    UCHAR_MAX
#endif/** Maximum and minimum values for ints.*/
#define INT_MAX     2147483647
#define INT_MIN     (-INT_MAX-1)#define UINT_MAX    0xffffffff/** Maximum and minimum values for shorts.*/
#define SHRT_MAX    32767
#define SHRT_MIN    (-SHRT_MAX-1)#define USHRT_MAX   0xffff/** Maximum and minimum values for longs and unsigned longs.** TODO: This is not correct for Alphas, which have 64 bit longs.*/
#define LONG_MAX    2147483647L
#define LONG_MIN    (-LONG_MAX-1)#define ULONG_MAX   0xffffffffUL#ifndef __STRICT_ANSI__
/* POSIX wants this.  */
#define SSIZE_MAX LONG_MAX
#endif#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) \|| !defined(__STRICT_ANSI__)
/* ISO C9x macro names */
#define LLONG_MAX 9223372036854775807LL
#define LLONG_MIN (-LLONG_MAX - 1)
#define ULLONG_MAX (2ULL * LLONG_MAX + 1)
#endif/** The GNU C compiler also allows 'long long int'*/
#if !defined(__STRICT_ANSI__) && defined(__GNUC__)#define LONG_LONG_MAX   9223372036854775807LL
#define LONG_LONG_MIN   (-LONG_LONG_MAX-1)
#define ULONG_LONG_MAX  (2ULL * LONG_LONG_MAX + 1)/* MSVC compatibility */
#define _I64_MIN LONG_LONG_MIN
#define _I64_MAX LONG_LONG_MAX
#define _UI64_MAX ULONG_LONG_MAX#endif /* Not Strict ANSI and GNU C compiler */#endif /* not _LIMITS_H_ */

有了这头文件后就可以减少使用0x3fffffff这种类型了。

这篇关于C++中的limits.h和climits(C++基本数据类型的最值)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

C++ 中的 if-constexpr语法和作用

《C++中的if-constexpr语法和作用》if-constexpr语法是C++17引入的新语法特性,也被称为常量if表达式或静态if(staticif),:本文主要介绍C++中的if-c... 目录1 if-constexpr 语法1.1 基本语法1.2 扩展说明1.2.1 条件表达式1.2.2 fa

C语言中的数据类型强制转换

《C语言中的数据类型强制转换》:本文主要介绍C语言中的数据类型强制转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C语言数据类型强制转换自动转换强制转换类型总结C语言数据类型强制转换强制类型转换:是通过类型转换运算来实现的,主要的数据类型转换分为自动转换

C++中::SHCreateDirectoryEx函数使用方法

《C++中::SHCreateDirectoryEx函数使用方法》::SHCreateDirectoryEx用于创建多级目录,类似于mkdir-p命令,本文主要介绍了C++中::SHCreateDir... 目录1. 函数原型与依赖项2. 基本使用示例示例 1:创建单层目录示例 2:创建多级目录3. 关键注

C++从序列容器中删除元素的四种方法

《C++从序列容器中删除元素的四种方法》删除元素的方法在序列容器和关联容器之间是非常不同的,在序列容器中,vector和string是最常用的,但这里也会介绍deque和list以供全面了解,尽管在一... 目录一、简介二、移除给定位置的元素三、移除与某个值相等的元素3.1、序列容器vector、deque

C++常见容器获取头元素的方法大全

《C++常见容器获取头元素的方法大全》在C++编程中,容器是存储和管理数据集合的重要工具,不同的容器提供了不同的接口来访问和操作其中的元素,获取容器的头元素(即第一个元素)是常见的操作之一,本文将详细... 目录一、std::vector二、std::list三、std::deque四、std::forwa

C++字符串提取和分割的多种方法

《C++字符串提取和分割的多种方法》在C++编程中,字符串处理是一个常见的任务,尤其是在需要从字符串中提取特定数据时,本文将详细探讨如何使用C++标准库中的工具来提取和分割字符串,并分析不同方法的适用... 目录1. 字符串提取的基本方法1.1 使用 std::istringstream 和 >> 操作符示

SpringBoot整合MybatisPlus的基本应用指南

《SpringBoot整合MybatisPlus的基本应用指南》MyBatis-Plus,简称MP,是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,下面小编就来和大家介绍一下... 目录一、MyBATisPlus简介二、SpringBoot整合MybatisPlus1、创建数据库和

C++原地删除有序数组重复项的N种方法

《C++原地删除有序数组重复项的N种方法》给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度,不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(... 目录一、问题二、问题分析三、算法实现四、问题变体:最多保留两次五、分析和代码实现5.1、问题分析5.

C++ 各种map特点对比分析

《C++各种map特点对比分析》文章比较了C++中不同类型的map(如std::map,std::unordered_map,std::multimap,std::unordered_multima... 目录特点比较C++ 示例代码 ​​​​​​代码解释特点比较1. std::map底层实现:基于红黑