本文主要是介绍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++基本数据类型的最值)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!