可以在C++中以整数类型存储的最大值

jac*_*007 1 c++ int

我在C++中有以下程序

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <limits>
using namespace std;

int main()
{
    printf("range of int: %d to %d", SHRT_MIN, SHRT_MAX);
    int a = 1000006;
    printf("\n Integer a is equal to %d", a);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是 - 如何a存储大于MAX限制的整数?

god*_*lka 5

请参见http://en.cppreference.com/w/cpp/header/climitshttp://en.cppreference.com/w/cpp/types/numeric_limits

SHRT_MAX是类型对象的最大值short int,但a属于类型int,因此适当的常量将是INT_MAX.在32位系统上通常的值是32767(2¹⁵-1).你可能有一个64位系统,其中2147483647(2³¹-1)可能是上限.

此外,正如上面的评论中所指出的,您可能还想要运行

#include <limits>
#include <iostream>

int main() {
    std::cout << "type\tlowest\thighest\n";
    std::cout << "int\t"
              << std::numeric_limits<int>::lowest() << '\t'
              << std::numeric_limits<int>::max() << '\n';
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在某些情况下(参见INT_ [MIN | MAX]限制宏与numeric_limits <T>)确定这些值(从上面提到的参考页面复制的代码).

另外,如果由于某种原因整数类型的宽度与您的代码相关,您可能还需要考虑查看http://en.cppreference.com/w/cpp/types/integerhttp:/ /en.cppreference.com/w/cpp/header/cstdint用于固定宽度整数类型(另请参阅是否有任何理由不使用固定宽度整数类型(例如uint8_t)?讨论).