好的,我正在阅读一些有关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
的值。