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

时间:2014-05-17 12:36:39

标签: 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;
}

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

2 个答案:

答案 0 :(得分:5)

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

SHRT_MAXshort 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;
}

在某些情况下(请参阅INT_[MIN|MAX] limit macros vs numeric_limits<T>)确定这些值(从上述参考页面复制的代码)。

另外,如果由于某种原因,整数类型的宽度与您的代码相关,您可能还需要考虑查看http://en.cppreference.com/w/cpp/types/integerhttp://en.cppreference.com/w/cpp/header/cstdint的固定宽度整数类型(请参阅还Is there any reason not to use fixed width integer types (e.g. uint8_t)?进行讨论。)

答案 1 :(得分:2)

整数类型变量是一个只能保存整数的变量(例如,-2,-1,0,1,2)。 C ++实际上有四个不同的整数变量可供使用:char,short,int和long。这些不同整数类型之间的唯一区别是它们具有不同的大小

您的变量属于int(非短)

short类型变量的最小值。

SHRT_MIN
–32768

short类型变量的最大值。

SHRT_MAX
32767

int类型变量的最小值。

INT_MIN
–2147483647 – 1

int类型变量的最大值。

INT_MAX
2147483647

a能够存储1000006,因为

a = 1000006 <  2147483647

所以没有问题:)

相关问题