基本数据类型分两大类:ios
规则:
short至少16位,int至少和short同样长;
long至少32位,至少和int同样长;
long long至少64位,至少和long同样长。
float至少4个字节;
double至少6个字节,而且很多于float;
long double至少和double同样长。操作系统
不一样的系统环境,数据范围有所不一样;32位/64位操做系统,数据范围也有所不一样。
能够经过代码来肯定不一样的范围:
code
#include <stdio.h> #include <limits.h> int main() { printf("max integer: %d\n", INT_MAX); printf("min integer: %d\n", INT_MIN); return 0; }
#include <iostream> #include <limits> int main() { std::cout << numeric_limits<int>::max() << endl; std::cout << numeric_limits<int>::min() << endl; return 0; }
介绍个亲身遇到的数据溢出的问题。
it
int d = 0; long value = d * 1000 + 10;
上面一段代码就有发生数据溢出的可能。当变量d足够大时,再乘以1000就会溢出。结果可想而知,是一个相对小的数值。io
//能够这样改写,就不会出现问题 long value = (long)d * 1000 + 10;