// -----------
// Limits2.c++
// -----------

#include <cassert>  // assert
#include <iostream> // cout, endl
#include <limits>   // numeric_limits
#include <sstream>  // ostringstream
#include <string>   // ==

int main () {
    using namespace std;
    cout << "Limits2.c++" << endl;

    assert(numeric_limits<         char>::min()      ==                 -128);
    assert(numeric_limits<         char>::max()      ==                  127);
    assert(numeric_limits<unsigned char>::min()      ==                    0);
    assert(numeric_limits<unsigned char>::max()      ==                  255);

    assert(numeric_limits<         short>::min()     ==               -32768);
    assert(numeric_limits<         short>::max()     ==                32767);
    assert(numeric_limits<unsigned short>::min()     ==                    0);
    assert(numeric_limits<unsigned short>::max()     ==                65535);

    assert(numeric_limits<         int>::min()       ==          -2147483647 - 1);
    assert(numeric_limits<         int>::max()       ==           2147483647);
    assert(numeric_limits<unsigned int>::min()       ==                    0);
    assert(numeric_limits<unsigned int>::max()       ==           4294967295U);

    assert(numeric_limits<         long>::min()      ==          -2147483647 - 1);
    assert(numeric_limits<         long>::max()      ==           2147483647);
    assert(numeric_limits<unsigned long>::min()      ==                    0);
    assert(numeric_limits<unsigned long>::max()      ==           4294967295U);

    assert(numeric_limits<         long long>::min() == -9223372036854775807LL - 1);
    assert(numeric_limits<         long long>::max() ==  9223372036854775807LL);
    assert(numeric_limits<unsigned long long>::min() ==                    0);
    assert(numeric_limits<unsigned long long>::max() == 18446744073709551615ULL);

    {
    ostringstream out;
    out << numeric_limits<float>::min();
    assert(out.str() == "1.17549e-38");
    }
    {
    ostringstream out;
    out << numeric_limits<float>::max();
    assert(out.str() == "3.40282e+38");
    }

    {
    ostringstream out;
    out << numeric_limits<double>::min();
    assert(out.str() == "2.22507e-308");
    }
    {
    ostringstream out;
    out << numeric_limits<double>::max();
    assert(out.str() == "1.79769e+308");
    }

    {
    ostringstream out;
    out << numeric_limits<long double>::min();
    assert(out.str() == "3.3621e-4932");
    }
    {
    ostringstream out;
    out << numeric_limits<long double>::max();
    assert(out.str() == "1.18973e+4932");
    }

    cout << "Done." << endl;
    return 0;}


syntax highlighted by Code2HTML, v. 0.9.1