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

相关文章

利用c++判断水仙花数并输出示例代码

《利用c++判断水仙花数并输出示例代码》水仙花数是指一个三位数,其各位数字的立方和恰好等于该数本身,:本文主要介绍利用c++判断水仙花数并输出的相关资料,文中通过代码介绍的非常详细,需要的朋友可以... 以下是使用C++实现的相同逻辑代码:#include <IOStream>#include <vec

基于C++的UDP网络通信系统设计与实现详解

《基于C++的UDP网络通信系统设计与实现详解》在网络编程领域,UDP作为一种无连接的传输层协议,以其高效、低延迟的特性在实时性要求高的应用场景中占据重要地位,下面我们就来看看如何从零开始构建一个完整... 目录前言一、UDP服务器UdpServer.hpp1.1 基本框架设计1.2 初始化函数Init详解

C++ 右值引用(rvalue references)与移动语义(move semantics)深度解析

《C++右值引用(rvaluereferences)与移动语义(movesemantics)深度解析》文章主要介绍了C++右值引用和移动语义的设计动机、基本概念、实现方式以及在实际编程中的应用,... 目录一、右值引用(rvalue references)与移动语义(move semantics)设计动机1

C++ move 的作用详解及陷阱最佳实践

《C++move的作用详解及陷阱最佳实践》文章详细介绍了C++中的`std::move`函数的作用,包括为什么需要它、它的本质、典型使用场景、以及一些常见陷阱和最佳实践,感兴趣的朋友跟随小编一起看... 目录C++ move 的作用详解一、一句话总结二、为什么需要 move?C++98/03 的痛点⚡C++

MySQL中between and的基本用法、范围查询示例详解

《MySQL中betweenand的基本用法、范围查询示例详解》BETWEENAND操作符在MySQL中用于选择在两个值之间的数据,包括边界值,它支持数值和日期类型,示例展示了如何使用BETWEEN... 目录一、between and语法二、使用示例2.1、betwphpeen and数值查询2.2、be

详解C++ 存储二进制数据容器的几种方法

《详解C++存储二进制数据容器的几种方法》本文主要介绍了详解C++存储二进制数据容器,包括std::vector、std::array、std::string、std::bitset和std::ve... 目录1.std::vector<uint8_t>(最常用)特点:适用场景:示例:2.std::arra

C++构造函数中explicit详解

《C++构造函数中explicit详解》explicit关键字用于修饰单参数构造函数或可以看作单参数的构造函数,阻止编译器进行隐式类型转换或拷贝初始化,本文就来介绍explicit的使用,感兴趣的可以... 目录1. 什么是explicit2. 隐式转换的问题3.explicit的使用示例基本用法多参数构造

C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解

《C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解》:本文主要介绍C++,C#,Rust,Go,Java,Python,JavaScript性能对比全面... 目录编程语言性能对比、核心优势与最佳使用场景性能对比表格C++C#RustGoJavapythonjav

C++打印 vector的几种方法小结

《C++打印vector的几种方法小结》本文介绍了C++中遍历vector的几种方法,包括使用迭代器、auto关键字、typedef、计数器以及C++11引入的范围基础循环,具有一定的参考价值,感兴... 目录1. 使用迭代器2. 使用 auto (C++11) / typedef / type alias

C++ scoped_ptr 和 unique_ptr对比分析

《C++scoped_ptr和unique_ptr对比分析》本文介绍了C++中的`scoped_ptr`和`unique_ptr`,详细比较了它们的特性、使用场景以及现代C++推荐的使用`uni... 目录1. scoped_ptr基本特性主要特点2. unique_ptr基本用法3. 主要区别对比4. u