Output(c_digit.c)

Please note that even sizeof(long double) is not pre-defined!
On some machines sizeof(int)=8,but sizeof(long)=4 (sizeof(long long)=8)
Linux@iPentium (single CPU)

*****Machine: i586
sizeof(int)=4           sizeof(unsigned)=4
sizeof(long)=4          sizeof(unsigned long)=4
sizeof(long long)=8     sizeof(unsigned long long)=8
sizeof(float)=4         sizeof(double)=8
sizeof(long double)=12
*****Some operations:
(unsigned)(-1)          =0xFFFFFFFF
(unsigned long long)(-1)=0xFFFFFFFFFFFFFFFF

Solaris@sparc SUNW,Ultra-Enterprise(8 CPU's SMP, 512MB RAM!)

*****Machine: sun4u
sizeof(int)=4           sizeof(unsigned)=4
sizeof(long)=4          sizeof(unsigned long)=4
sizeof(long long)=8     sizeof(unsigned long long)=8
sizeof(float)=4         sizeof(double)=8
sizeof(long double)=16
*****Some operations:
(unsigned)(-1)          =0xFFFFFFFF
(unsigned long long)(-1)=0xFFFFFFFFFFFFFFFF

Source(c_digit.c)

/* cc -O5 -o c_digit -Wall c_digit.c */

#include <stdio.h>
#include <stdlib.h>

#ifdef __FreeBSD__
#    define LONG_LONG    "q"
#else
#    define LONG_LONG    "ll"
#endif

int main(void)
{
    printf("*****Machine: "); fflush(stdout);
    system("uname -m");

    printf("sizeof(int)=%d"      "\t\t"    "sizeof(unsigned)=%d\n"
           "sizeof(long)=%d"     "\t\t"    "sizeof(unsigned long)=%d\n"
           "sizeof(long long)=%d"  "\t"    "sizeof(unsigned long long)=%d\n"
           "sizeof(float)=%d"    "\t\t"    "sizeof(double)=%d\n"
           "sizeof(long double)=%d\n",
           sizeof(int),          sizeof(unsigned),
           sizeof(long),         sizeof(unsigned long),
           sizeof(long long),    sizeof(unsigned long long),
           sizeof(float),        sizeof(double),
           sizeof(long double)
    );
    
    printf("*****Some operations:\n"
           "(unsigned)(-1)          =0x%X\n"
           "(unsigned long long)(-1)=0x%"LONG_LONG"X\n",
           (unsigned)(-1),
           (unsigned long long)(-1));
        
   return 0;
}

Output(digit.cxx)

This programm prints out some information about your machine.
Output operations are done with C++ standart library.

*****Machine: i586
sizeof(int)=4           sizeof(unsigned)=4
sizeof(long)=4          sizeof(unsigned long)=4
sizeof(long long)=8     sizeof(unsigned long long)=8
sizeof(float)=4         sizeof(double)=8
sizeof(long double)=12
*****Some operations:
(unsigned)(-1)          =0xffffffff
(unsigned long long)(-1)=0xffffffffffffffff

Source(digit.cxx)

// c++ -O5 -o digit -Wall digit.cxx

#include <iostream>
#include <iomanip>

using namespace std ;

#include <stdlib.h>

int main(int, char*[])
{
    cout << "This programm prints out some information about your machine.\n"
            "Output operations are done with C++ standart library.\n"
            "\n"
            "*****Machine: " << flush; // syncronize with system() stdio calls

    system("uname -m");

    cout << "sizeof(int)=" << sizeof(int) << "\t\t"
                "sizeof(unsigned)=" << sizeof(unsigned) << endl <<
            "sizeof(long)=" << sizeof(long) << "\t\t"
                "sizeof(unsigned long)=" << sizeof(unsigned long) << endl <<
            "sizeof(long long)=" << sizeof(long long) << "\t"
                "sizeof(unsigned long long)=" <<
                    sizeof(unsigned long long) << endl <<
            "sizeof(float)=" << sizeof(float) << "\t\t"
                "sizeof(double)=" << sizeof(double) << endl <<
            "sizeof(long double)=" << sizeof(long double) << endl;

    cout << "*****Some operations:\n" << setiosflags(ios::showbase) << hex <<
            "(unsigned)(-1)          =" << (unsigned)(-1) << endl <<
            "(unsigned long long)(-1)=" << (unsigned long long)(-1) << endl;
        
    return 0;
}