i6403.c
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 165 行
C
165 行
#include "fail.h"
#include <limits.h>
int fooi___( int x ) {
return x + 1;
}
unsigned foou___( unsigned x ) {
return x + 2;
}
long fool___( long x ) {
return x + 3;
}
unsigned long fooul__( unsigned long x ) {
return x + 4;
}
#ifdef __WATCOM_INT64__
__int64 fooi64_( __int64 x ) {
return x + 5;
}
unsigned __int64 fooui64( unsigned __int64 x ) {
return x + 6;
}
__int64 bar( __int64 x ) {
return x;
}
#endif
int main() {
#define testi___( c, i ) fooi___( c ) != ( c + i )
#define testu___( c, i ) foou___( c ) != ( c + i )
#define testl___( c, i ) fool___( c ) != ( c + i )
#define testul__( c, i ) fooul__( c ) != ( c + i )
#define testi64_( c, i ) fooi64_( c ) != ( c + i )
#define testui64( c, i ) fooui64( c ) != ( c + i )
if( testi___( 0, 1 ) ) _fail;
if( testu___( 0u, 2 ) ) _fail;
if( testu___( 0U, 2 ) ) _fail;
if( testul__( 0ul, 4 ) ) _fail;
if( testul__( 0uL, 4 ) ) _fail;
if( testul__( 0Ul, 4 ) ) _fail;
if( testul__( 0UL, 4 ) ) _fail;
if( testul__( 0lu, 4 ) ) _fail;
if( testul__( 0Lu, 4 ) ) _fail;
if( testul__( 0lU, 4 ) ) _fail;
if( testul__( 0LU, 4 ) ) _fail;
#ifdef __WATCOM_INT64__
if( testi64_( 0i64, 5 ) ) _fail;
if( testi64_( 0I64, 5 ) ) _fail;
if( testi64_( 0ll, 5 ) ) _fail;
if( testi64_( 0LL, 5 ) ) _fail;
if( testi64_( 0Ll, 5 ) ) _fail;
if( testi64_( 0lL, 5 ) ) _fail;
if( testui64( 0ui64, 6 ) ) _fail;
if( testui64( 0uI64, 6 ) ) _fail;
if( testui64( 0Ui64, 6 ) ) _fail;
if( testui64( 0UI64, 6 ) ) _fail;
if( testui64( 0ull, 6 ) ) _fail;
if( testui64( 0uLl, 6 ) ) _fail;
if( testui64( 0ulL, 6 ) ) _fail;
if( testui64( 0uLL, 6 ) ) _fail;
if( testui64( 0Ull, 6 ) ) _fail;
if( testui64( 0ULl, 6 ) ) _fail;
if( testui64( 0UlL, 6 ) ) _fail;
if( testui64( 0ULL, 6 ) ) _fail;
if( testi64_( 9999999999, 5 ) ) _fail;
if( testi64_( 9999999999l, 5 ) ) _fail;
if( testi64_( 9999999999L, 5 ) ) _fail;
if( testui64( 9999999999U, 6 ) ) _fail;
if( testui64( 9999999999Ul, 6 ) ) _fail;
if( testui64( 9999999999UL, 6 ) ) _fail;
if( testui64( 9999999999u, 6 ) ) _fail;
if( testui64( 9999999999ul, 6 ) ) _fail;
if( testui64( 9999999999uL, 6 ) ) _fail;
if( testi64_( 0x9999999999, 5 ) ) _fail;
if( testi64_( 0x9999999999l, 5 ) ) _fail;
if( testi64_( 0x9999999999L, 5 ) ) _fail;
if( testui64( 0x9999999999U, 6 ) ) _fail;
if( testui64( 0x9999999999Ul, 6 ) ) _fail;
if( testui64( 0x9999999999UL, 6 ) ) _fail;
if( testui64( 0x9999999999u, 6 ) ) _fail;
if( testui64( 0x9999999999ul, 6 ) ) _fail;
if( testui64( 0x9999999999uL, 6 ) ) _fail;
#endif
if( testi___( CHAR_MIN, 1 ) ) _fail;
if( testi___( CHAR_MAX, 1 ) ) _fail;
if( testi___( SCHAR_MIN, 1 ) ) _fail;
if( testi___( SCHAR_MAX, 1 ) ) _fail;
if( testu___( UCHAR_MAX, 2 ) ) _fail;
if( testi___( SHRT_MIN, 1 ) ) _fail;
if( testi___( SHRT_MAX, 1 ) ) _fail;
if( testu___( USHRT_MAX, 2 ) ) _fail;
if( testi___( INT_MIN, 1 ) ) _fail;
if( testi___( INT_MAX, 1 ) ) _fail;
if( testu___( UINT_MAX, 2 ) ) _fail;
if( testl___( LONG_MIN, 3 ) ) _fail;
if( testl___( LONG_MAX, 3 ) ) _fail;
if( testul__( ULONG_MAX, 4 ) ) _fail;
#ifdef __WATCOM_INT64__
if( testi64_( LONGLONG_MIN, 5 ) ) _fail;
if( testi64_( LONGLONG_MAX, 5 ) ) _fail;
if( testui64( ULONGLONG_MAX, 6 ) ) _fail;
if( testi64_( LLONG_MIN, 5 ) ) _fail;
if( testi64_( LLONG_MAX, 5 ) ) _fail;
if( testui64( ULLONG_MAX, 6 ) ) _fail;
if( testi64_( _I64_MIN, 5 ) ) _fail;
if( testi64_( _I64_MAX, 5 ) ) _fail;
if( testui64( _UI64_MAX, 6 ) ) _fail;
#endif
if( testi___( 0, 1 ) ) _fail;
#if INT_MAX < 65536
if( testi___( 32766, 1 ) ) _fail;
if( testi___( 32767, 1 ) ) _fail;
if( testl___( 32766l, 3 ) ) _fail;
if( testl___( 32767L, 3 ) ) _fail;
if( testl___( 32768, 3 ) ) _fail;
if( testu___( 32768U, 2 ) ) _fail;
if( testu___( 32768u, 2 ) ) _fail;
if( testl___( 2147483646, 3 ) ) _fail;
if( testl___( 2147483647, 3 ) ) _fail;
if( testl___( 2147483646l, 3 ) ) _fail;
if( testl___( 2147483647L, 3 ) ) _fail;
if( testul__( 2147483648, 4 ) ) _fail;
if( testul__( 2147483648U, 4 ) ) _fail;
if( testul__( 2147483648u, 4 ) ) _fail;
if( testul__( 4294967294, 4 ) ) _fail;
if( testul__( 4294967294u, 4 ) ) _fail;
if( testul__( 4294967294U, 4 ) ) _fail;
if( testul__( 4294967295, 4 ) ) _fail;
if( testul__( 4294967295u, 4 ) ) _fail;
if( testul__( 4294967295U, 4 ) ) _fail;
#elif INT_MAX < 4294967295U
if( testi___( 32766, 1 ) ) _fail;
if( testi___( 32767, 1 ) ) _fail;
if( testl___( 32766l, 3 ) ) _fail;
if( testl___( 32767L, 3 ) ) _fail;
if( testi___( 32768, 1 ) ) _fail;
if( testu___( 32768U, 2 ) ) _fail;
if( testu___( 32768u, 2 ) ) _fail;
if( testi___( 2147483646, 1 ) ) _fail;
if( testi___( 2147483647, 1 ) ) _fail;
if( testl___( 2147483646l, 3 ) ) _fail;
if( testl___( 2147483647L, 3 ) ) _fail;
if( testul__( 2147483648, 4 ) ) _fail;
if( testu___( 2147483648U, 2 ) ) _fail;
if( testu___( 2147483648u, 2 ) ) _fail;
if( testul__( 4294967294, 4 ) ) _fail;
if( testu___( 4294967294u, 2 ) ) _fail;
if( testu___( 4294967294U, 2 ) ) _fail;
if( testul__( 4294967295, 4 ) ) _fail;
if( testu___( 4294967295u, 2 ) ) _fail;
if( testu___( 4294967295U, 2 ) ) _fail;
#else
#error int is larger than expected
#endif
#ifdef __WATCOM_INT64__
if( testi64_( 4294967296, 5 ) ) _fail;
if( testui64( 4294967296u, 6 ) ) _fail;
if( testui64( 4294967296U, 6 ) ) _fail;
/* Test for bug in Open Watcom 1.2 scanner */
if( bar( 12345LL ) != 12345 ) _fail;
if( bar( 12345ULL ) != 12345 ) _fail;
#endif
_PASS;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?