# include <stdio.h>
#define ISNEG(X) ( (X) < ( (int)0 ) )
void
display_result( int arg, int result)
{
printf ( "ISNEG(%d) is %stive\n " , arg
, ( result
? "nega" : "posi" ) ) ; }
void
display_uresult( unsigned int arg, int result)
{
printf ( "ISNEG(%u) is %stive\n " , arg
, ( result
? "nega" : "posi" ) ) ; }
int main ( )
{
short shrt = 5 ;
short nshrt = - 5 ;
unsigned short ushrt = 5 ;
display_result( shrt, ISNEG( shrt) ) ;
display_result( nshrt, ISNEG( nshrt) ) ;
display_uresult( ushrt, ISNEG( ushrt) ) ;
int ni = - 5 ;
int i = 5 ;
int zero = 0 ;
display_result( ni, ISNEG( ni) ) ;
display_result( i, ISNEG( i) ) ;
display_result( zero, ISNEG( zero) ) ;
display_result( ~zero, ISNEG( ~zero) ) ; // wrong
unsigned int uzero = 0 ;
unsigned int ui = 5 ;
display_uresult( uzero, ISNEG( uzero) ) ;
display_uresult( ~uzero, ISNEG( ~uzero) ) ;
display_uresult( ui, ISNEG( ui) ) ;
long int li = - 5 ;
unsigned long int uli = 5 ;
display_result( li, ISNEG( li) ) ;
display_uresult( uli, ISNEG( uli) ) ;
long long int lli = - 5 ;
unsigned long long int ulli = 5 ;
display_result( lli, ISNEG( lli) ) ;
display_uresult( ulli, ISNEG( ulli) ) ;
return 0 ;
}
IyBpbmNsdWRlIDxzdGRpby5oPgogCiNkZWZpbmUgSVNORUcoWCkgKCAoWCkgPCAoIChpbnQpMCApICkKIAogCnZvaWQKZGlzcGxheV9yZXN1bHQoaW50IGFyZywgaW50IHJlc3VsdCkKewogIHByaW50ZigiSVNORUcoJWQpIGlzICVzdGl2ZVxuIiwgYXJnLCAocmVzdWx0ID8gIm5lZ2EiIDogInBvc2kiKSk7Cn0KIAp2b2lkCmRpc3BsYXlfdXJlc3VsdCh1bnNpZ25lZCBpbnQgYXJnLCBpbnQgcmVzdWx0KQp7CiAgcHJpbnRmKCJJU05FRygldSkgaXMgJXN0aXZlXG4iLCBhcmcsIChyZXN1bHQgPyAibmVnYSIgOiAicG9zaSIpKTsKfQogCmludCBtYWluICgpCnsKICBzaG9ydCBzaHJ0ID0gIDU7CiAgc2hvcnQgbnNocnQgPSAtNTsKICB1bnNpZ25lZCBzaG9ydCB1c2hydCA9IDU7CiAKICBkaXNwbGF5X3Jlc3VsdChzaHJ0LCBJU05FRyhzaHJ0KSk7CiAgZGlzcGxheV9yZXN1bHQobnNocnQsIElTTkVHKG5zaHJ0KSk7CiAgZGlzcGxheV91cmVzdWx0KHVzaHJ0LCBJU05FRyh1c2hydCkpOwogCiAgaW50IG5pID0gLTU7CiAgaW50IGkgPSA1OwogIGludCB6ZXJvID0gMDsKIAogIGRpc3BsYXlfcmVzdWx0KG5pLCBJU05FRyhuaSkpOwogIGRpc3BsYXlfcmVzdWx0KGksIElTTkVHKGkpKTsKICBkaXNwbGF5X3Jlc3VsdCh6ZXJvLCBJU05FRyh6ZXJvKSk7CiAgZGlzcGxheV9yZXN1bHQofnplcm8sIElTTkVHKH56ZXJvKSk7ICAvLyB3cm9uZwogCiAgdW5zaWduZWQgaW50IHV6ZXJvID0gMDsKICB1bnNpZ25lZCBpbnQgdWkgPSA1OwogCiAgZGlzcGxheV91cmVzdWx0KHV6ZXJvLCBJU05FRyh1emVybykpOwogIGRpc3BsYXlfdXJlc3VsdCh+dXplcm8sIElTTkVHKH51emVybykpOwogIGRpc3BsYXlfdXJlc3VsdCh1aSwgSVNORUcodWkpKTsKIAogIGxvbmcgaW50IGxpID0gLTU7CiAgdW5zaWduZWQgbG9uZyBpbnQgdWxpID0gNTsKIAogIGRpc3BsYXlfcmVzdWx0KGxpLCBJU05FRyhsaSkpOwogIGRpc3BsYXlfdXJlc3VsdCh1bGksIElTTkVHKHVsaSkpOwogCiAgbG9uZyBsb25nIGludCBsbGkgPSAtNTsKICB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHVsbGkgPSA1OwogCiAgZGlzcGxheV9yZXN1bHQobGxpLCBJU05FRyhsbGkpKTsKICBkaXNwbGF5X3VyZXN1bHQodWxsaSwgSVNORUcodWxsaSkpOwogCiAgcmV0dXJuIDA7Cn0=