2016-10-28 7 views
0

私は次の代入arr1 [i ++] = arr2 [j ++]の背後にある論理は何ですか?

arr[i++] = 1 を持っている場合

arr[i] = 1; 
i++; 

と同等である。しかし

arr1[i++] = arr2[j++]

arr1[i] = arr2[j]; 
i++; 
j++; 
と同等ではないことを理解し

どのマシンが//do somethingまず1を増加させ、その後、私は現在< 5であるかどうかを評価、実行してい

int i = 0; 
while(i++ < 5){ 
    // do something... 
} 

は?

誰か理解してもらえますか?

+4

はい、同等です。あなたが何を求めているのかは分かりません。 – nhouser9

+1

あなたはそれをテストして自分で見ることができます。しかし、とにかく、あなたの尋問は、そのようなコードが理解しにくいという明確な兆候であり、したがって、すべての費用をかけて回避すべきです。単一のコード行にできるだけ多くの命令を置くだけで、コードの読み込みと保守が難しくなります。 –

+0

'i ++'は直ちにインクリメントし、前の値を返します。 – 4castle

答えて

4

実際、arr[i++] = 1iは、その値がアレイに書き込まれた時間だけインクリメントされた

arr[i++] = i; 

ような式で

int i1 = i; 
i = i + 1; 
arr[i1] = 1; 

差が関連なると等価です。私はあなたの質問を解決するのに十分な情報であることを願っています。

+0

覚えておくべき最良の場所は次のとおりです。https://docs.oracle.com /javase/specs/jls/se8/html/jls-15.html#jls-15.7これは、簡単な経験則を提供します。式は例外なく、左から右へと評価されます。 –

関連する問題