- 论坛徽章:
- 0
|
- #include <stdio.h>
- const int issn_shift[9] = { 0, 7, 15, 0, 31, 0, 0, 0, 63 };
- int main()
- {
- #define ISSN(x) ( x<0? 1: \
- (x^=(1<<issn_shift[sizeof(x)]))<0? \
- (x^=(1<<issn_shift[sizeof(x)]),1) : \
- (x^=(1<<issn_shift[sizeof(x)]),0) )
- int i;
- unsigned int j;
- short ss;
- unsigned short us;
- char sc;
- unsigned char uc;
- for( i=0; (unsigned int) i != 0xffffffff; (unsigned int) i++ )
- {
- if(! ISSN(i) )
- {
- printf("int error %d\n",i);
- return -1;
- }
- }
- for( j=0; j != 0xffffffff; j++ )
- {
- if( ISSN(j) )
- {
- printf("unsigned int error %u\n",j);
- return -1;
- }
- }
- for( ss=0; (unsigned short) ss != 0xffff; (unsigned short) ss++ )
- {
- if(! ISSN(ss) )
- {
- printf("short error %d\n",ss);
- return -1;
- }
- }
- for( us=0; us != 0xffff; us++ )
- {
- if( ISSN(us) )
- {
- printf("unsigned short error %u\n",us);
- return -1;
- }
- }
- for( sc=0; (unsigned char) sc != 0xff; (unsigned char) sc++ )
- {
- if(! ISSN(sc) )
- {
- printf("char error %d\n",sc);
- return -1;
- }
- }
- for( uc=0; uc != 0xff; uc++ )
- {
- if( ISSN(uc) )
- {
- printf("unsigned char error %u\n",uc);
- return -1;
- }
- }
- return 0;
- }
复制代码 |
|