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++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

Python ORM神器之SQLAlchemy基本使用完全指南

《PythonORM神器之SQLAlchemy基本使用完全指南》SQLAlchemy是Python主流ORM框架,通过对象化方式简化数据库操作,支持多数据库,提供引擎、会话、模型等核心组件,实现事务... 目录一、什么是SQLAlchemy?二、安装SQLAlchemy三、核心概念1. Engine(引擎)

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键

C++ STL-string类底层实现过程

《C++STL-string类底层实现过程》本文实现了一个简易的string类,涵盖动态数组存储、深拷贝机制、迭代器支持、容量调整、字符串修改、运算符重载等功能,模拟标准string核心特性,重点强... 目录实现框架一、默认成员函数1.默认构造函数2.构造函数3.拷贝构造函数(重点)4.赋值运算符重载函数

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

C++ vector越界问题的完整解决方案

《C++vector越界问题的完整解决方案》在C++开发中,std::vector作为最常用的动态数组容器,其便捷性与性能优势使其成为处理可变长度数据的首选,然而,数组越界访问始终是威胁程序稳定性的... 目录引言一、vector越界的底层原理与危害1.1 越界访问的本质原因1.2 越界访问的实际危害二、基

c++日志库log4cplus快速入门小结

《c++日志库log4cplus快速入门小结》文章浏览阅读1.1w次,点赞9次,收藏44次。本文介绍Log4cplus,一种适用于C++的线程安全日志记录API,提供灵活的日志管理和配置控制。文章涵盖... 目录简介日志等级配置文件使用关于初始化使用示例总结参考资料简介log4j 用于Java,log4c

C++归并排序代码实现示例代码

《C++归并排序代码实现示例代码》归并排序将待排序数组分成两个子数组,分别对这两个子数组进行排序,然后将排序好的子数组合并,得到排序后的数组,:本文主要介绍C++归并排序代码实现的相关资料,需要的... 目录1 算法核心思想2 代码实现3 算法时间复杂度1 算法核心思想归并排序是一种高效的排序方式,需要用

MySQL数据类型与表操作全指南( 从基础到高级实践)

《MySQL数据类型与表操作全指南(从基础到高级实践)》本文详解MySQL数据类型分类(数值、日期/时间、字符串)及表操作(创建、修改、维护),涵盖优化技巧如数据类型选择、备份、分区,强调规范设计与... 目录mysql数据类型详解数值类型日期时间类型字符串类型表操作全解析创建表修改表结构添加列修改列删除列