#include <stdio.h>
#define is_type_signed(t) (((t) - 1) < 0)
#define is_signed(t) printf( #t " is %s\n", is_type_signed(t) ? "signed" : "unsigned" );
int main(void)
{
is_signed(int);
is_signed(unsigned int);
printf("%d\n", is_type_signed(int));
printf("%d\n", is_type_signed(unsigned int));
is_signed(char);
is_signed(unsigned char);
printf("%d\n", is_type_signed(char));
printf("%d\n", is_type_signed(unsigned char));
is_signed(long);
is_signed(unsigned long);
printf("%d\n", is_type_signed(long));
printf("%d\n", is_type_signed(unsigned long));
return 0;
}
/*
run:
int is signed
unsigned int is unsigned
1
0
char is signed
unsigned char is unsigned
1
0
long is signed
unsigned long is unsigned
1
0
*/