std::numeric_limits<T>を使うとC++で数値型の最大値と最小値を取得できます。
#include <limits>
using namespace std;
cout << "int" << endl;
cout << numeric_limits<int>::min() << endl;
cout << numeric_limits<int>::max() << endl;
cout << "unsigned long" << endl;
cout << numeric_limits<unsigned long>::min() << endl;
cout << numeric_limits<unsigned long>::max() << endl;
実行結果
int
-2147483648
2147483647
unsigned long
0
4294967295