2013-02-15 20 views

回答

15

這是CBCPAT,令人困惑但正確的指針算術技巧。

由於在C++(和C)陣列訂閱是使用指針運算,如果a是一個數組,i是索引(一個整數),然後完成

a[i] 

相當於

*(a + i) 

並且由於加法是可交換的,這是相同的

*(i + a) 

,其又可以寫成

i[a] 

i。即你正在用數組索引整數(WTH?)。

已經瞭解到這之後,你可以很容易地重寫代碼,以瞭解它的作用:它相當於與

(a + i - 1)[(a - i)[i] % N] 

這只是

(a + i - 1)[1 % N] 

這又

(a + i - 1)[1 % 5], 

*(a + i - 1 + 1) 

a[i] 

瞧。擰編寫這個廢話的程序員。

+7

還要注意,它只有在表格的第一個元素等於1.'(a - i)[i]'明智地寫成'a [i - i]'='a [0]'= 1(在這種情況下)。無論如何,我會判斷編寫此代碼的程序員從軟盤安裝Windows 7至少十次。 – Spook 2013-02-15 06:02:26

+3

僅適用於最後一句。如果可以的話,我會再次給出一個很好的解釋。 – 2013-02-15 06:10:25

相關問題