基本數據類型分兩大類: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;