dtor18.c
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 96 行
C
96 行
#include "fail.h"
int count;
struct C {
C(int);
~C();
};
C::C(int) {
++count;
}
C::~C() {
--count;
if( count < 0 ) fail(__LINE__);
}
int o1( int v1, int v2 )
{
return (C(v1),v1)||(C(v2),v2);
}
int o2( int v1, int v2 )
{
return (C(v1),v1)||(v2);
}
int o3( int v1, int v2 )
{
return (v1)||(C(v2),v2);
}
int a1( int v1, int v2 )
{
return (C(v1),v1)&&(C(v2),v2);
}
int a2( int v1, int v2 )
{
return (C(v1),v1)&&(v2);
}
int a3( int v1, int v2 )
{
return (v1)&&(C(v2),v2);
}
int main()
{
if( o1( 0, 0 ) != 0 ) fail(__LINE__);
if( count != 0 ) { count = 0; fail(__LINE__); }
if( o1( 1, 0 ) != 1 ) fail(__LINE__);
if( count != 0 ) { count = 0; fail(__LINE__); }
if( o1( 0, 1 ) != 1 ) fail(__LINE__);
if( count != 0 ) { count = 0; fail(__LINE__); }
if( o1( 1, 1 ) != 1 ) fail(__LINE__);
if( count != 0 ) { count = 0; fail(__LINE__); }
if( o2( 0, 0 ) != 0 ) fail(__LINE__);
if( count != 0 ) { count = 0; fail(__LINE__); }
if( o2( 1, 0 ) != 1 ) fail(__LINE__);
if( count != 0 ) { count = 0; fail(__LINE__); }
if( o2( 0, 1 ) != 1 ) fail(__LINE__);
if( count != 0 ) { count = 0; fail(__LINE__); }
if( o2( 1, 1 ) != 1 ) fail(__LINE__);
if( count != 0 ) { count = 0; fail(__LINE__); }
if( o3( 0, 0 ) != 0 ) fail(__LINE__);
if( count != 0 ) { count = 0; fail(__LINE__); }
if( o3( 1, 0 ) != 1 ) fail(__LINE__);
if( count != 0 ) { count = 0; fail(__LINE__); }
if( o3( 0, 1 ) != 1 ) fail(__LINE__);
if( count != 0 ) { count = 0; fail(__LINE__); }
if( o3( 1, 1 ) != 1 ) fail(__LINE__);
if( count != 0 ) { count = 0; fail(__LINE__); }
if( a1( 0, 0 ) != 0 ) fail(__LINE__);
if( count != 0 ) { count = 0; fail(__LINE__); }
if( a1( 1, 0 ) != 0 ) fail(__LINE__);
if( count != 0 ) { count = 0; fail(__LINE__); }
if( a1( 0, 1 ) != 0 ) fail(__LINE__);
if( count != 0 ) { count = 0; fail(__LINE__); }
if( a1( 1, 1 ) != 1 ) fail(__LINE__);
if( count != 0 ) { count = 0; fail(__LINE__); }
if( a2( 0, 0 ) != 0 ) fail(__LINE__);
if( count != 0 ) { count = 0; fail(__LINE__); }
if( a2( 1, 0 ) != 0 ) fail(__LINE__);
if( count != 0 ) { count = 0; fail(__LINE__); }
if( a2( 0, 1 ) != 0 ) fail(__LINE__);
if( count != 0 ) { count = 0; fail(__LINE__); }
if( a2( 1, 1 ) != 1 ) fail(__LINE__);
if( count != 0 ) { count = 0; fail(__LINE__); }
if( a3( 0, 0 ) != 0 ) fail(__LINE__);
if( count != 0 ) { count = 0; fail(__LINE__); }
if( a3( 1, 0 ) != 0 ) fail(__LINE__);
if( count != 0 ) { count = 0; fail(__LINE__); }
if( a3( 0, 1 ) != 0 ) fail(__LINE__);
if( count != 0 ) { count = 0; fail(__LINE__); }
if( a3( 1, 1 ) != 1 ) fail(__LINE__);
if( count != 0 ) { count = 0; fail(__LINE__); }
_PASS;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?