【转载】C++的整型常量的范围
有时要在程序中设置一个大的整数表示正的无穷大,熟悉PASCAL的人都知道有两个经常用到的符号常量叫MAXINT和MAXLONGINT。C++中该怎么办呢?
其实在头文件limits中有关于各种整型常量的取值范围和最大整型和最小整型的定义。例如,
| signed | unsigned
------------------------------------------------------------------------------------------------------------------------
类型 | 最小值 最大值 | 最大值
------------------------------------------------------------------------------------------------------------------------
字符 | SCHAR_MIN SCHAR_MAX | UCHAR_MAX
短整型 | SHRT_MIN SHRT_MAX | USHRT_MAX
整型 | INT_MIN INT_MAX | UINT_MAX
长整型 | LONG_MIN LONG_MIN | ULONG_MAX
64位整型 | LONG_LONG_MIN LONG_LONG_MAX | ULONG_LONG_MAX
有了这些预定义的常量,我们就可以在程序中直接使用它们。例如,下面的程序就可以输出无符号的64位整型,这也是目前可以表示的最大的整数
#include <iostream>
#include <limits>
using namespace std;
int main()
{
cout << ULONG_LONG_MAX << endl;
return 0;
}
此外,要给一个long long 型整数直接赋一个特别大的整数时,需要在整数后加后缀LL,否则会报告整数超过范围的错误。
如下例:
#include <iostream>
#include <limits>
using namespace std;
int main()
{
long long x = 123456789012345LL; //不加后缀LL就会在编译时出错。
cout << x << endl;
return 0;
}
以上的<limits>中的内容在poj中提交出现编译错误,但是<climits>头文件则可以在poj中提交。
转载自http://blog.sina.com.cn/s/blog_416fb8fd0100boyd.html
- #include<iostream>
- #include<climits>
- using
namespacestd; -
- int
main() - {
-
"longcout<< <<LLONG_MAX<<endl;long的最大值:" -
"longcout<< <<LLONG_MIN<<endl;long的最小值:" -
"unsignedcout<< <<ULLONG_MAX<<endl<<endl;long long的最大值:" -
-
"__int64的最大值:"<<_I64_MAX<<endl;cout<< -
"__int64的最小值:"<<_I64_MIN<<endl;cout<< -
"unsignedcout<< <<_UI64_MAX<<endl<<endl;__int64的最大值:" -
-
-
-
return0; - }