該表達式是從左到右解析的嗎?我試圖解釋解析結果,但最後的結果是錯誤的。表達式的結果和解析結果是什麼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
處理像藥物這樣的表達:「只是說不! –