2016-02-10 66 views
2

可以說我有兩個int數組array1和array2。一次增加兩個索引

這是行:

這個
array1[i++] = array2[j++]; 

等於:

array1[i] = array2[j]; 
i++; 
j++; 

+7

是的,他們是等價的。 – haccks

+3

在你得到答案之前,讓我問你,你是否嘗試寫一個示例代碼並檢查輸出?你得到了什麼?你不明白哪一部分? –

+2

請一直顯示您的研究成果。請先閱讀[問]頁面。 –

回答

3

是的,他們是等價的,除非你寫#DEFINE i j#DEFINE j i,在這種情況下,第一個片段的行爲是不確定的

+0

這太遺憾了。我剛剛downvoted每個答案http://stackoverflow.com/questions/35318980/java-how-to-create-an-arraylist-of-integer-arrays?noredirect=1,所以需要一些業力。 – Bathsheba

+0

噢,那是從我 –

+1

...而不是兩個定義:) – ryanpattison

2

是的,這是允許的。你不會在一個沒有序列點的語句中兩次修改同一個變量,所以你很好。

如果你這樣做但是,你會調用undefined behavior

array1[i++] = array2[i++]; 

但是,這將是罰款,因爲逗號運營商引入序列點:

array1[i++] = (j++,j++); 
+0

我不同意第二個例子是「好」!它可能不是未定義的,但它是不現實的和令人困惑的... –