F:\Vijay\C> type range.c 
/*
 * range.c          Find out ranges of short and int.
 * Author       -   Vijay Kumar R Zanvar 
 * Date         -   Jul 1, 2004
 */

#include 
#include 
#include 

#define OFFSET(x)  (sizeof((x)) * CHAR_BIT - 1)

int
main ( void )
{
    short s = (short)1 << OFFSET(s);
    int i = 1 << OFFSET(i);

    printf ( "SHRT_MIN:\t%-12d\t%-12d\n", s, SHRT_MIN );
    s = ~((short)0) ^ ((short)1 << OFFSET(s));
    printf ( "SHRT_MAX:\t%-12d\t%-12d\n", s, SHRT_MAX );

    printf ( "INT_MIN:\t%-12d\t%-12d\n", i, INT_MIN ); 
    i = ~0 ^ (1 << OFFSET(i));
    printf ( "INT_MAX:\t%-12d\t%-12d\n", i, INT_MAX ); 
    return EXIT_SUCCESS;
}

F:\Vijay\C> gcc range.c
F:\Vijay\C> a 
SHRT_MIN:	-32768      	-32768      
SHRT_MAX:	32767       	32767       
INT_MIN:	-2147483648 	-2147483648 
INT_MAX:	2147483647  	2147483647  

    Source: geocities.com/vijoeyz/faq/c

               ( geocities.com/vijoeyz/faq)                   ( geocities.com/vijoeyz)