好的,我正在阅读一些有关RedBlackTrees的代码。我注意到这一行“ v1 = v2 = v3 = v4;”我了解类似“ v1 + = v2”(将v2添加到v1的当前值)和“ v1 = v2”(创建从v2到v1的引用)之类的东西。

public void insert( AnyType item )
{
    current = parent = grand = header;


但是我很好奇当前= parent = grand = header的内存/引用中发生了什么;

http://faculty.washington.edu/moishe/javademos/REDBlack/RedBTree.java

编辑:下午10:46

我仍然需要等待10分钟才能批准问题,对不起,女士们和男士们。

最佳答案

发生的情况是,将header的值分配给grand的值,该值又分配给parent的值,而该值又又分配给current。最后,这四个变量具有相同的值。这个惯用法用于快速将多个变量初始化为相同的值,并且等效于以下形式:

grand = header;
parent = grand;
current = parent;


分配从右到左进行,实际上问题中的表达式是这样计算的:

current = (parent = (grand = header));


之所以可行,是因为赋值运算符的结果实际上是计算得出的赋值,例如,这可行:

return x = 42;


在最后一个代码段中,将42分配给x,然后返回x的值。

08-19 01:34