# include <stdio.h>
#define ISNEG(X) (!((X) > 0) && ((X) != 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 ;
}
IyBpbmNsdWRlIDxzdGRpby5oPgoKI2RlZmluZSBJU05FRyhYKSAoISgoWCkgPiAwKSAmJiAoKFgpICE9IDApKQoKCnZvaWQKZGlzcGxheV9yZXN1bHQoaW50IGFyZywgaW50IHJlc3VsdCkKewogIHByaW50ZigiSVNORUcoJWQpIGlzICVzdGl2ZVxuIiwgYXJnLCAocmVzdWx0ID8gIm5lZ2EiIDogInBvc2kiKSk7Cn0KCnZvaWQKZGlzcGxheV91cmVzdWx0KHVuc2lnbmVkIGludCBhcmcsIGludCByZXN1bHQpCnsKICBwcmludGYoIklTTkVHKCV1KSBpcyAlc3RpdmVcbiIsIGFyZywgKHJlc3VsdCA/ICJuZWdhIiA6ICJwb3NpIikpOwp9CgppbnQgbWFpbiAoKQp7CiAgc2hvcnQgc2hydCA9ICA1OwogIHNob3J0IG5zaHJ0ID0gLTU7CiAgdW5zaWduZWQgc2hvcnQgdXNocnQgPSA1OwoKICBkaXNwbGF5X3Jlc3VsdChzaHJ0LCBJU05FRyhzaHJ0KSk7CiAgZGlzcGxheV9yZXN1bHQobnNocnQsIElTTkVHKG5zaHJ0KSk7CiAgZGlzcGxheV91cmVzdWx0KHVzaHJ0LCBJU05FRyh1c2hydCkpOwoKICBpbnQgbmkgPSAtNTsKICBpbnQgaSA9IDU7CiAgaW50IHplcm8gPSAwOwoKICBkaXNwbGF5X3Jlc3VsdChuaSwgSVNORUcobmkpKTsKICBkaXNwbGF5X3Jlc3VsdChpLCBJU05FRyhpKSk7CiAgZGlzcGxheV9yZXN1bHQoemVybywgSVNORUcoemVybykpOwogIGRpc3BsYXlfcmVzdWx0KH56ZXJvLCBJU05FRyh+emVybykpOyAgLy8gd3JvbmcKCiAgdW5zaWduZWQgaW50IHV6ZXJvID0gMDsKICB1bnNpZ25lZCBpbnQgdWkgPSA1OwoKICBkaXNwbGF5X3VyZXN1bHQodXplcm8sIElTTkVHKHV6ZXJvKSk7CiAgZGlzcGxheV91cmVzdWx0KH51emVybywgSVNORUcofnV6ZXJvKSk7CiAgZGlzcGxheV91cmVzdWx0KHVpLCBJU05FRyh1aSkpOwoKICBsb25nIGludCBsaSA9IC01OwogIHVuc2lnbmVkIGxvbmcgaW50IHVsaSA9IDU7CgogIGRpc3BsYXlfcmVzdWx0KGxpLCBJU05FRyhsaSkpOwogIGRpc3BsYXlfdXJlc3VsdCh1bGksIElTTkVHKHVsaSkpOwoKICBsb25nIGxvbmcgaW50IGxsaSA9IC01OwogIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgdWxsaSA9IDU7CgogIGRpc3BsYXlfcmVzdWx0KGxsaSwgSVNORUcobGxpKSk7CiAgZGlzcGxheV91cmVzdWx0KHVsbGksIElTTkVHKHVsbGkpKTsKCiAgcmV0dXJuIDA7Cn0=