操作员有什么用!! 在C?

 囬憶啲伈情_542_256_427 发布于 2023-02-07 18:19

大家好,我发给你的是我的一段代码.我想回答我的问题,这段代码已经足够,所以我没有发送所有代码.在开关的情况下,我可以看到T1,T2使用双!那是什么意思?

BinQueue
    Merge( BinQueue H1, BinQueue H2 )
    {
        BinTree T1, T2, Carry = NULL;
        int i, j;

        if( H1->CurrentSize + H2->CurrentSize > Capacity )
            Error( "Merge would exceed capacity" );

        H1->CurrentSize += H2->CurrentSize;
        for( i = 0, j = 1; j <= H1->CurrentSize; i++, j *= 2 )
        {
            T1 = H1->TheTrees[ i ]; T2 = H2->TheTrees[ i ];

            switch( !!T1 + 2 * !!T2 + 4 * !!Carry )//what does mean??
            {
                case 0: /* No trees */
                case 1: /* Only H1 */
                    break;
                case 2: /* Only H2 */
                    H1->TheTrees[ i ] = T2;
                    H2->TheTrees[ i ] = NULL;
                    break;
                case 4: /* Only Carry */
                    H1->TheTrees[ i ] = Carry;
                    Carry = NULL;
                    break;
                case 3: /* H1 and H2 */
                    Carry = CombineTrees( T1, T2 );
                    H1->TheTrees[ i ] = H2->TheTrees[ i ] = NULL;
                    break;
                case 5: /* H1 and Carry */
                    Carry = CombineTrees( T1, Carry );
                    H1->TheTrees[ i ] = NULL;
                    break;
                case 6: /* H2 and Carry */
                    Carry = CombineTrees( T2, Carry );
                    H2->TheTrees[ i ] = NULL;
                    break;
                case 7: /* All three */
                    H1->TheTrees[ i ] = Carry;
                    Carry = CombineTrees( T1, T2 );
                    H2->TheTrees[ i ] = NULL;
                    break;
            }
        }
        return H1;
    }

nullptr.. 5

!意味着逻辑NOT.!!手段NOT NOT.

NOT如果操作数为零,则逻辑为1,否则为0. !!如果操作数非零,则为1;如果操作数为零,则为0.

这是将操作数映射为二进制(0,1)比例的便捷方式.

你可以重写!!p(p ? 1 : 0).

在您的情况下,!!p如果p为NULL ,则为零,1如果p为非NULL ,则为零.

1 个回答
  • !意味着逻辑NOT.!!手段NOT NOT.

    NOT如果操作数为零,则逻辑为1,否则为0. !!如果操作数非零,则为1;如果操作数为零,则为0.

    这是将操作数映射为二进制(0,1)比例的便捷方式.

    你可以重写!!p(p ? 1 : 0).

    在您的情况下,!!p如果p为NULL ,则为零,1如果p为非NULL ,则为零.

    2023-02-07 18:23 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有