diag0246.c

来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 107 行

C
107
字号
#include <limits.h>
struct M {
    int m;
    static void do_it(){};
};

void f();

typedef enum {ONE, TWO, TREE, __MAX=UINT_MAX } nums;

typedef struct {
   unsigned int ubitfield : 3;
   signed int sbitfield : 4;
} bit_struct;

void main()
{
    char c;
    signed char sc;
    unsigned char uc;
    unsigned short us;
    signed short ss;
    unsigned int u;
    unsigned long ul;
    signed long sl; 
    long l;
    char *p;
    char *p1;
    nums e;
    bit_struct bits;

    if( p < (char *)0 );	// always 0
    if( (char *)0 > p );	// always 0
    if( 0 <= p );	// always 1
    if( p >= 0 );	// always 1

    if( c <= 127 );	// OK
    if( c >= -127 );	// always 1

    if( sc <= 127 );	// always 1
    if( sc >= -128 );	// always 1

    if( uc <= 0xfff );	// always 1
    if( uc >= 0 );	// always 1
    if( 0xff >= uc );	// always 1
    if( -1 <= uc );	// always 1

    if( 0xff >= uc ); 	// always 1
    if( 0 <= uc ); 	// always 1
    if( uc <= 0xff ); 	// always 1
    if( uc >= 0 ); 	// always 1

    if( uc < 0xff );	// OK
    if( uc > 0 );	// OK
    if( 0xff > uc );	// OK
    if( 0 < uc );	// OK

    if( uc > 0xff ); 	// always 0
    if( uc < 0 ); 	// always 0
    if( 0xff < uc ); 	// always 0
    if( 0 > uc ); 	// always 0

    if( u >= 0 );	// always 1
    if( u < 0 );	// always 0
    if( uc >= 0 );	// always 1
    if( uc < 0 );	// always 0
    if( us >= 0 );	// always 1
    if( us < 0 );	// always 0
    if( ss > SHRT_MAX );	// always 0
    if( ss < SHRT_MIN );	// always 0
    if( ul >= 0 );	// always 1
    if( ul < 0 );	// always 0

    if( sl >= LONG_MIN );  // always 1
    if( sl <= LONG_MAX );  // always 1

    if( l <= LONG_MAX );	// always 1
    if( l < LONG_MIN );	// always 0

    if( p >= 0 );	// always 1
    if( 0 <= p );	// always 1
    if( p < 0 );	// always 0
    if( 0 > p );	// always 0

    if( e < 0 );		// always 0
    if( e > 12 );		// always 1

    if( &f >= 0 );	// always 1
    if( 0 <= &f );	// always 1
    if( &f < 0 );	// always 0
    if( 0 > &f );	// always 0

    if( &M::do_it >= 0 );	// always 1
    if( 0 <= &M::do_it );	// always 1
    if( &M::do_it < 0 );	// always 0
    if( 0 > &M::do_it );	// always 0

    if( bits.ubitfield < 0 ); 	// always 0
    if( bits.sbitfield < -8 ); 	// always 0 but can't diagnose this yet
    if( bits.sbitfield > 7 ); 	// always 0 but can't diagnose this yet

    if( (l=1,c) >= (l=1,-3) );	// always 1
    if( (l=1,p1) >= (l=1,0) ); 	// always 1


}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?