⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cond1.c

📁 开放源码的编译器open watcom 1.6.0版的源代码
💻 C
字号:
#include "fail.h"

int Ac = 0, Ad = 0;
int Bc = 0, Bd = 0;

class A {
public:
    A( bool b )
        : b ( b )
    { Ac++; }

    operator bool() { return b; }

    ~A() { Ad++; }

private:
    bool b;
};

class B {
public:
    B( int i )
        : i ( i )
    { Bc++; }

    operator int() { return i; }

    ~B() { Bd++; }

private:
    int i;
};

int main()
{
    for( int i = 0; i < 2; i++ ) {
        if( A a = ( i == 0 ) ) {
            bool b = a;
            if( ! b ) fail( __LINE__ );
            if( i != 0 ) fail( __LINE__ );
            if( Ac != ( Ad + 1 ) ) fail( __LINE__ );
        } else {
            bool b = a;
            if( b ) fail( __LINE__ );
            if( i == 0 ) fail( __LINE__ );
            if( Ac != ( Ad + 1 ) ) fail( __LINE__ );
        }
        if( ! ( Ac == ( 2*i + 1 ) && Ad == ( 2*i + 1) ) ) fail( __LINE__ );

        if( A a = ( i != 0 ) ) {
            bool b = a;
            if( ! b ) fail( __LINE__ );
            if( i == 0 ) fail( __LINE__ );
            if( Ac != ( Ad + 1 ) ) fail( __LINE__ );
        } else {
            bool b = a;
            if( b ) fail( __LINE__ );
            if( i != 0 ) fail( __LINE__ );
            if( Ac != ( Ad + 1 ) ) fail( __LINE__ );
        }
        if( ! ( Ac == ( 2*i + 2 ) && Ad == ( 2*i + 2) ) ) fail( __LINE__ );
        int a = 0;

        switch( B b = i ) {
        case 0:
            if( b != 0 ) fail( __LINE__ );
            if( Bc != ( Bd + 1 ) ) fail( __LINE__ );
            break;

        case 1:
            if( b != 1 ) fail( __LINE__ );
            if( Bc != ( Bd + 1 ) ) fail( __LINE__ );
            break;
        }
        int b = 0;

        if( ! ( Bc == ( i + 1 ) && Bd == (i + 1 ) ) ) fail( __LINE__ );
    }

    _PASS;
}

⌨️ 快捷键说明

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