unsigned int的最大值是多少?
我写了一个程序,用unsigned int
找到最后一个斐波那契数。这是1836311903
,但我认为unsigned int
的最大值是65535
。发生什么了?unsigned int的最大值是多少?
while(true)
{
sequence[j] = sequence[j-1] + sequence[j-2];
if(sequence[j-1]>sequence[j]) break;
j++;
}
printf("%d", sequence[j-2]);
你错误地认为unsigned int的最大值是65535.对于大多数编译器来说,大多数编译器都没有这种情况,因为我们有16位处理器的时候可能早在windows 95以前。
该标准不定义任何整型的大小;他们只是定义了彼此之间的大小关系。 (long long> = long> = int> = short> = char ... etc)实际的大小虽然非常常见且一致,但是由编译器的实现来定义,因此通常是平台定义的。
不能承受大多数int使用处理器上一个单词的大小;今天通常是32位或64位。
您可以通过sizeof(int)来验证'为什么';然后提高2的权力减去1,你已经得到你的答案最大整数...
更好的办法是#include <limits.h>
或#include <climits>
并使用它定义的值。 在C++
中,您也可以使用std::numeric_limits<unsigned int>::max()
。
如http://www.tutorialspoint.com/cprogramming/c_data_types.htm(以及许多其他地方)中所示,无符号整型可以是2个字节或4个字节。在你的情况下,你使用4个字节,所以最大值是4,294,967,295。
您提到的最大值,65535对应2个字节。
下面的代码会给您的系统上一个unsigned int的最大值:
#include <stdio.h>
typedef unsigned int ui;
int main()
{
ui uimax = ~0;
printf("uimax %u\n",uimax);
return 0;
}
int型,只定义它们的大小不是他们的实际大小例如之间的关系
为unsigned long long int>的= unsigned long int类型> =无符号整型> =无符号短整型> =无符号字符
使用其中一个内置设施来获得最大尺寸会更加清晰。 – 2015-11-30 00:09:56
更清晰你的意思是更容易?它只是我不知道有多清晰我可以得到...对不起,我是这个论坛的东西noob ..... – user2419083 2015-11-30 00:22:24
'std :: numeric_limits
除非你有2个字节的无符号'int's,在'最大数量的无符号int'绝对是大于65535. – wolfPack88 2014-10-08 19:56:22
你如何“知道”最大的'unsigned int'是65535? – 2014-10-08 20:00:43