C++最大非负int

0 c++

以下是否在所有平台,int的大小等方面按预期工作?或者有更可接受的方式吗?(我做了以下的事.)

#define MAX_NON_NEGATIVE_INT ((int)(((unsigned int)-1) / 2))
Run Code Online (Sandbox Code Playgroud)

我不会通过解释它正在做的事来侮辱你的智慧!

编辑:我应该提到我不能使用任何标准类,因为我在没有C运行时运行.

Pét*_*rök 11

一种标准的方法:

#include <limits>
#include <iostream>

cout << numeric_limits<unsigned int>::max();
Run Code Online (Sandbox Code Playgroud)

作为标准,这保证可以在所有平台上移植.


Mar*_*ram 7

如果您不想使用定义(并且您想要一种计算限制的标准方法),那么执行以下操作:

#include <limits>
std::numeric_limits<int>::min()
Run Code Online (Sandbox Code Playgroud)

这些是limits.h中定义的ANSI标准:

#define INT_MIN     (-2147483647 - 1) /* minimum (signed) int value */
#define INT_MAX       2147483647    /* maximum (signed) int value */
#define UINT_MAX      0xffffffff    /* maximum unsigned int value */
Run Code Online (Sandbox Code Playgroud)

这些是BaseTsd.h的定义:

#define MAXUINT     ((UINT)~((UINT)0))
#define MAXINT      ((INT)(MAXUINT >> 1))
#define MININT      ((INT)~MAXINT)
Run Code Online (Sandbox Code Playgroud)