#include <stdio.h>
#include <limits.h>

int main(void)
{
    printf("(int)(unsigned)((char)0x7f))\t= %d\n", (int)(unsigned)((char)0x7f));
    printf("(int)((char)0x7f))          \t= %d\n", (int)((char)0x7f));

    printf("(int)(unsigned)((char)0xff))\t= %d\n", (int)(unsigned)((char)0xff));
    printf("(int)((char)0xff))          \t= %d\n", (int)((char)0xff));

    printf("CHAR_BIT\t= %d\n",	CHAR_BIT);
    printf("\n");
    
    printf("CHAR_MIN\t= %d\n",	CHAR_MIN);
    printf("CHAR_MAX\t= %d\n",	CHAR_MAX);
    printf("char is %s\n", (CHAR_MIN < 0) ? "signed" : "unsigned");
    if ( ((CHAR_MIN < 0) && ((int)((char)0xff) >= 0)) ||
	 ((CHAR_MIN >= 0) && ((int)((char)0xff) < 0)) )
	printf("ERROR: compiler and <limits.h> handle signed char differently!\n");
    printf("\n");

    printf("SCHAR_MIN\t= %d\n",	SCHAR_MIN);
    printf("SCHAR_MAX\t= %d\n",	SCHAR_MAX);
    printf("\n");
    
    printf("UCHAR_MAX\t= %d\n",	UCHAR_MAX);

    return(0);
}
