无符号整型的最大值

11

这是我的要求:

unsigned int max_unsigned_int_size;
max_unsigned_int_size = ???;

我该怎么做呢?


2
你的变量名与标题不匹配。你想要无符号整数能够表示的最大值,还是无符号值可以达到的最大大小? - GManNickG
6个回答

41

C

#include <limits.h>
unsigned int max_unsigned_int_size = UINT_MAX;

C++

#include <limits>
unsigned int max_unsigned_int_size = std::numeric_limits<unsigned int>::max();

21
或者两者都是:= -1; - GManNickG
1
@QPaysTaxes:是的。在SO上有很多讨论这个问题的资源。你可以将-1分配给任何无符号整数类型并获得最大值,这是有保证的。 - GManNickG

18
unsigned int max_unsigned_int_size = -1;

保证执行正确操作。无符号类型的算术运算总是取模。

但在具体情况中,您应该始终使用UINT_MAX


你应该使用强制类型转换来避免警告(至少在Visual Studio中): unsigned int max_unsigned_int_size = (unsigned int) -1; - Daerst
不,使用C语言时应该避免使用强制类型转换,因为它们会让人误以为你知道自己在做什么,即使你并不知道。如果你的编译器抱怨有符号到无符号的转换,请查找关闭此功能的选项,或者如果不可能,获取一个符合标准的编译器。 - Jens Gustedt

7
您正在寻找的是:
#include <limits>
std::numeric_limits<unsigned int>::max();

如果您想要尺寸,可以使用sizeof,然后乘以CHAR_BITS得到位数。

或者,也可以使用

std::numeric_limits<unsigned int>::digits();

4
你需要使用 std::numeric_limits::max()
#include <limits>

...

max_insigned_int_size = std::numeric_limits<unsigned int>::max():

2
  • C语言中该值可以在limits.h中找到,其值为UINT_MAX
  • C++中也可以使用limits库中的std::numeric_limits<unsigned int>::max()来获取该值。

3
对于C++,UINT_MAX的值也是正确的。 - Pete Becker

1
#include <limits>

max_unsigned_int_size = std::numeric_limits<unsigned int>::max();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接