代码如下:
int a = 1;
int b = 2;
a = b++;
printf("%d\n",a);
printf("%d\n",b);
运算符++的优先级高于运算符=,那为啥b先赋值给a再自增,这不是矛盾了吗?
代码如下:
int a = 1;
int b = 2;
a = b++;
printf("%d\n",a);
printf("%d\n",b);
运算符++的优先级高于运算符=,那为啥b先赋值给a再自增,这不是矛盾了吗?
【相关推荐】
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;
}