Rus*_*kov -2 c++ math int unsigned
我写了一个程序来找到使用类型的最后一个Fibonacci数unsigned int.它是1836311903,但我认为最大值为unsigned intIS 65535.发生什么了?
while(true)
{
sequence[j] = sequence[j-1] + sequence[j-2];
if(sequence[j-1]>sequence[j]) break;
j++;
}
printf("%d", sequence[j-2]);
Run Code Online (Sandbox Code Playgroud)
您错误地认为unsigned int的最大数字是65535.对于大多数编译器来说情况并非如此,因为在我们拥有16位处理器时可能是Windows 95的早期版本.
标准没有定义任何整数类型的大小; 他们只定义彼此之间的大小关系.(long long> = long> = int> = short> = char ... etc)实际大小虽然非常常见且一致,但是由编译器的实现定义,因此通常是平台定义的.
不能忍受大多数int使用处理器上一个字的大小; 今天通常是32位或64位.
你可以通过sizeof(int)来验证'为什么'你自己; 然后将2增加到该功率减去1并且你得到了max int的答案...
更好的方法是使用#include <limits.h>或#include <climits>定义它定义的值.在C++你也可以使用std::numeric_limits<unsigned int>::max().