unsigned int的最大值?

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)

UpA*_*dam 7

您错误地认为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().