Java:多个++ - 一行增加.哪一个先?

Tob*_*obi 2 java virtual-machine

嘿,我有以下两行代码:

result[i] = temp[i] + temp[i + 1] + " " + temp[i + 2];
i += 2;
Run Code Online (Sandbox Code Playgroud)

我想知道这行代码是否会这样做:

    result[i] = temp[i] + temp[i++] + " " + temp[i++];
Run Code Online (Sandbox Code Playgroud)

我可以确定,每个虚拟机都会从左到右处理这条线路吗?谢谢,托比

ada*_*max 11

Java语言规范:

Java编程语言保证运算符的操作数似乎以特定的评估顺序进行评估,即从左到右.

建议代码不要严格依赖于此规范.当每个表达式最多包含一个副作用时,代码通常更清晰,作为其最外层的操作,并且当代码不依赖于由于从左到右的表达式评估而出现的确切异常时.


Dun*_*ril 7

它应该是

result[i] = temp[i] + temp[++i] + " " + temp[++i];
Run Code Online (Sandbox Code Playgroud)

如果我没有错,那么在每次递增后计算索引.除此之外,它应该工作.

  • 好,你是第一个认出他们绝对不一样的人. (3认同)

And*_*ite 7

让我们试试实际引用来源.

同一行上的运营商具有相同的优先权.当具有相同优先级的运算符出现在同一表达式中时,规则必须控制首先计算的值.除了赋值运算符之外的所有二元运算符都是从左到右计算的 ; 赋值运算符从右到左进行计算.

看起来有人发现了规范的链接.