C++为什么这不提供整数的系统最大大小?

use*_*028 0 c c++ integer bit-manipulation

所以,如果我理解正确,整数是一个字节的集合,它代表基数为二的格式,如果你愿意的话.

因此,如果我有unsigned int test = 0,那么实际上应该只包含一个位字段,所有这些都是零.然而,

unsigned int test=0;
test=~test;
Run Code Online (Sandbox Code Playgroud)

产生-1.

我会认为这将填满所有的位'1',使整数与该系统上的整数一样大....

谢谢你的帮助!

unw*_*ind 12

你如何打印价值?

如果它显示为"-1"或大的无符号整数只是在打印出来时解释位的方式,则这些位本身不知道其中的差异.

您需要将其打印为unsigned值.

另外,正如其他答案所指出的那样,你对系统如何存储数字有很多建议; 不能保证数字和用于表示该数字的比特之间存在特定的相关性.

无论如何,获得此值的正确方法是#include <climits>然后使用UINT_MAX.

  • 那么使用`std :: numeric_limits`呢? (2认同)