i 可不简单 2023-10-02 09:52 采纳率: 25%
浏览 8
已结题

关于#c语言#的问题:运算符++的优先级高于运算符=,那为啥b先赋值给a再自增

代码如下:

int a = 1;
int b = 2;
a = b++;
printf("%d\n",a);
printf("%d\n",b);

运算符++的优先级高于运算符=,那为啥b先赋值给a再自增,这不是矛盾了吗?

  • 写回答

3条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-02 12:04
    关注

    【相关推荐】



    • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7543639
    • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:汉诺塔--使用递归编写一个程序实现汉诺塔问题,要求在输入圆盘数量之后,输出圆盘的移动步骤,输出格式示例如下: 第1步:1号盘从A柱移至B柱 第2步:2号盘从A柱移至C柱
    • 除此之外, 这篇博客: 数据结构:B树、B+树详解和C语言实现中的 子树的分裂 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
      • 子树的分裂是比较麻烦的地方,需要多申请两个节点,进行数据的复制粘贴,注意下标的对应。
      • 大致流程是如果父节点为空,申请一个新节点,把中间的关键字拿出来给它,然后让传入的二级指针解引用后指向它。如果不空,则把中间关键字插入到父节点中。
      • 接着再申请一个节点,把中间节点的后半部分的关键字和子树指针复制过去,注意节点的性质(是否是叶子节点)也要复制。
      • 然后修改原来节点的数据项,使其只保留前半部分的数据
      • 最后把两个新得到的子树一左一右挂在新的根节点上。
      void split_tree(BTree *tree)
      {
          BTree bnp1 = *tree;
          BTree bnp2 = BTree_init();
          BTree bp;
          int num = bnp1->keynum;
          int split = num/2;
          if(bnp1->parent == NULL)
          {
               bp = BTree_init();
               bp->parent = NULL;
               bp->keynum = 1;
               bp->isLeaf = 0;
               bp->key[0] = bnp1->key[split];
               bp->child[0] = bnp1;
               bp->child[1] = bnp2;
          }
          else
          {
              bp = bnp1->parent;
              bp->isLeaf = 0;
              bp->keynum++;
              KeyType temp1, temp2;
              BTNode *tcp1, *tcp2;
              for(int i = 0;i < bp->keynum;i++)
              {
                  //新关键字插到末尾
                  if(i == bp->keynum-1)
                  {
                      bp->key[i] = bnp1->key[split];
                      bp->child[i] = bnp1;
                      bp->child[i+1] = bnp2;
                      break;
                  }
                  //新关键字插到中间
                  if(bp->key[i]>bnp1->key[split])
                  {
                      tcp2 = bnp2;
                      temp2 = bnp1->key[split];
                      for(int k = i;k<bp->keynum;k++)
                      {
                          //关键字后移
                          temp1 = bp->key[k];
                          bp->key[k] = temp2;
                          temp2 = temp1;
                          //子树指针后移
                          tcp1 = bp->child[k+1];
                          bp->child[k+1] = tcp2;
                          tcp2 = tcp1;
                      }
                  }
      
              }
          }
          
          bnp1->keynum = split;
          bnp2->keynum = num - split -1;
          for(int i = 0, j = split+1;j<num;j++)
          {
              bnp2->key[i]=bnp1->key[j];
              bnp2->child[i]=bnp1->child[j];
          }
          bnp2->child[bnp2->keynum] = NULL;
          bnp2->isLeaf = bnp1->isLeaf;
          bnp2->parent = bp;
          bnp1->parent = bp;
          
          (*tree) = bp;
      }
      
      
      

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月12日
  • 已采纳回答 10月4日
  • 创建了问题 10月2日

悬赏问题

  • ¥15 YOLOv8已有一个初步的检测模型,想利用这个模型对新的图片进行自动标注,生成labellmg可以识别的数据,再手动修改。如何操作?
  • ¥30 NIRfast软件使用指导
  • ¥20 matlab仿真问题,求功率谱密度
  • ¥15 求micropython modbus-RTU 从机的代码或库?
  • ¥15 django5安装失败
  • ¥15 Java与Hbase相关问题
  • ¥15 后缀 crn 游戏文件提取资源
  • ¥20 bash代码推送不上去 git fetch origin master #失败了
  • ¥15 LOL外服加入了反作弊系统,现在游戏录像rofl文件离线都无法打开
  • ¥15 在centos7安装conda