int、long int 和 long long int 的取值范围
我们在做整型数字运算时,经常会遇到由于数字值极大导致的结果溢出,导致我们得到错误的结果,大多数情况下将变量定义为 long long int 即可。
为了便于理解,我们需要知道int、long int、long long int各自能够表示什么范围:
- int -2147483648~2147483647
- long int -2147483648~2147483647
- long long int -9223372036854775808~9223372036854775807
那么我们就明白了,相应的无符号类型的各自表示范围为:
- unsigned int 0~4294967295
- unsigned long int 0~4294967295
- unsigned long long int 0~18446744073709551615
同理,
- __int64 -9223372036854775808~9223372036854775807
- unsigned __int64 0~18446744073709551615
其实在C语言的 limits.h 库文件中已经包含了对应类型的极大和极小的整数值,直接调用就可以读取,例如:
#include<stdio.h>
#include <limits.h>
int intmax = INT_MAX;
int intmin = INT_MIN;
long long int longlongmax = LLONG_MAX;
long long int longlongmin = LLONG_MIN;
int main()
{
printf(“intmax = %d\nintmin = %d\nlonglongmax = %lld\nlonglongmin = %lld\n”, intmax, intmin, longlongmax, longlongmin);
return 0;
}