opt41.c

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

C
42
字号
#include "fail.h"

class uint64 {
    public:
        uint64()                        { }
        uint64( unsigned long i )       { lo = i; }
        uint64 operator+( const uint64 & a ) { uint64 tmp; tmp.lo = lo + a.lo; return tmp; }
        int operator<( const uint64 &a ) { return lo < a.lo; }
        uint64 operator+=( const uint64 & a )
        {
            // The assignment never gets done.
            return( *this = *this + a );
            // The following works though:
            // *this = *this + a;
            // return( *this );
        }
        uint64 operator++()
        {
            return( *this += 1 );
        }

        unsigned        hi, lo;
};
inline unsigned truncate( const uint64 &a )
{
    return( a.lo );
}


main()
{
    uint64 i;
    unsigned ui = 0;


    for( i = 0; i < 10; ++i, ++ui ) {
        unsigned tr = truncate( i );
        if( ui != tr ) _fail;
    }
    _PASS
}

⌨️ 快捷键说明

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