// -----------
// Limits1.c++
// -----------

#include <cassert>  // assert
#include <climits>  // CHAR_MIN...
#include <cfloat>   // FLT_MIN...
#include <iostream> // cout, endl
#include <sstream>  // ostringstream
#include <string>   // ==

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

    assert(CHAR_MIN   ==                 -128);
    assert(CHAR_MAX   ==                  127);
    assert(UCHAR_MAX  ==                  255);

    assert(SHRT_MIN   ==               -32768);
    assert(SHRT_MAX   ==                32767);
    assert(USHRT_MAX  ==                65535);

    assert(INT_MIN    ==          -2147483647 - 1);
    assert(INT_MAX    ==           2147483647);
    assert(UINT_MAX   ==           4294967295U);

    assert(LONG_MIN   ==          -2147483647 - 1);
    assert(LONG_MAX   ==           2147483647);
    assert(ULONG_MAX  ==           4294967295U);

    assert(LLONG_MIN  == -9223372036854775807LL - 1);
    assert(LLONG_MAX  ==  9223372036854775807LL);
    assert(ULLONG_MAX == 18446744073709551615ULL);

    {
    ostringstream out;
    out << FLT_MIN;
    assert(out.str() == "1.17549e-38");
    }

    {
    ostringstream out;
    out << FLT_MAX;
    assert(out.str() == "3.40282e+38");
    }

    {
    ostringstream out;
    out << DBL_MIN;
    assert(out.str() == "2.22507e-308");
    }

    {
    ostringstream out;
    out << DBL_MAX;
    assert(out.str() == "1.79769e+308");
    }

    {
    ostringstream out;
    out << LDBL_MIN;
    assert(out.str() == "3.3621e-4932");
    }

    {
    ostringstream out;
    out << LDBL_MAX;
    assert(out.str() == "1.18973e+4932");
    }

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


syntax highlighted by Code2HTML, v. 0.9.1