jj_lastpos = token_source.getNextToken();
jj_scanpos = jj_lastpos;
jj_scanpos.next = jj_lastpos;

jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
这两种写法有什么不同,求详细点的解释。
jj_lastpos、jj_scanpos、jj_scanpos.next都是一个类类型的变量。token_source.getNextToken()的返回值也是一个类类型的变量。而且这两个类相同。

解决方案 »

  1.   

    =的结合性是自右向左。所以第二种写法相当于
    jj_scanpos.next = ken_source.getNextToken();
    jj_scanpos = _scanpos.next;
    jj_lastpos = jj_scanpos;很明显,和第一种写法赋值顺序不同。这就有可能带来影响。
    jj_lastpos = token_source.getNextToken();
    jj_scanpos = jj_lastpos;//先赋值jjscanpos,则jj_scanpos.next会变成jj_lastpos.next
    jj_scanpos.next = jj_lastpos;