这个表达式是从左到右解析的吗?我试图解释分析的结果,但最后的结果是错误的。
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);发布于 2017-05-26 02:05:13
这些作业是从右到左解析的。你表达的方式
j+=j-=j*=j; 作为
j=j+(j-j*j);是正确的,但操作顺序最好用以下方式表示:
j=j+(j-(j*j)));同样,您可以将涉及k的赋值重写为:
k=k+(k*(k-k));-80和10分别是正确的答案。
发布于 2017-05-26 02:05:30
我试图在每一步中更清楚地说明变量到底发生了什么。
请记住,结果是从右到左解析的。
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;10https://stackoverflow.com/questions/44192383
复制相似问题