JavaとC++の式の評価順の違い

Java言語での気づき。

Javaはif文内の論理式の評価は左から行われる。

if(A && B && C)

だとAから評価される。

C/C++は右からみたい。(環境に依存する?)

しかもこれは何も論理式に限った話ではなく通常の代入文でも同様。

たとえば、

String s1 = {"","",""};
String s2
= {"a","b","c"};
int i = 0;

s[i] = s2[++i];


上記をJavaで実行すると、
s[0] = b
i = 1
となっている。

同様の文法をC++で実行すると、
s[1] = b
i = 1
となる。(右が先に評価されるため)

ややこしい。