该表达式是从左到右解析的吗?我试图解释解析结果,但最后的结果是错误的。表达式的结果和解析结果是什么j + = j- = j * j和j + = j * = j- = j? (倍数等于)
int j=10, k=10;
j+=j-=j*=j; //j=j+(j-=j*=j)=j+(j-j*j)
k+=k*=k-=k; //k=k+k*k-k;
System.out.println(j+";"+k);
该表达式是从左到右解析的吗?我试图解释解析结果,但最后的结果是错误的。表达式的结果和解析结果是什么j + = j- = j * j和j + = j * = j- = j? (倍数等于)
int j=10, k=10;
j+=j-=j*=j; //j=j+(j-=j*=j)=j+(j-j*j)
k+=k*=k-=k; //k=k+k*k-k;
System.out.println(j+";"+k);
任务从右向左被解析。您曾表示
j+=j-=j*=j;
为
j=j+(j-j*j);
的方式是正确的,但操作的顺序可能会被得到更好的表达:
j=j+(j-(j*j)));
同样,你可以重写涉及分配k为:
k=k+(k*(k-k));
-80和10分别是正确的答案。
分配从右向左进行解析。还是从左到右?它是否正常? – flower
我将以k + = k * = k- = k为例。首先,评估k- = k,评估最右边的分配。然后,评估继续向左移动 – FigletNewton
我试图提供一点更清晰的变化,通过每一步到底发生了什么。
请记住结果是从右向左分析的。
int j=10, k=10;
j += j -= j *= j;
// j *= j ---> j = 10*10 = 100
//j += j -= 100
// j -= 100 ---> j = 10-100 = -90
//j += -90 ---> j = 10+(-90) = -80
//j = -80
k += k *= k -= k;
// k -= k ---> k = 10-10 = 0
//k += k *= 0
// k *= 0 ---> k = 10*0 = 0
//k += 0 ---> k = 10+0 = 10
//k = 10
System.out.println(j+";"+k); //Prints -80;10
*但最后的结果是错误的。*或者说你只是觉得这是不对的 –
我已运行结果为-80和10.But我的结果是根据我的解析结果-80和100。 – flower
处理像药物这样的表达:“只是说不! –