我在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限制的整数?
答案 0 :(得分:5)
请参阅http://en.cppreference.com/w/cpp/header/climits和http://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;
}
在某些情况下(请参阅INT_[MIN|MAX] limit macros vs numeric_limits<T>)确定这些值(从上述参考页面复制的代码)。
另外,如果由于某种原因,整数类型的宽度与您的代码相关,您可能还需要考虑查看http://en.cppreference.com/w/cpp/types/integer和http://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
所以没有问题:)