2016-09-27 66 views
2

縱觀如今一些奇怪的混淆大賽碼數組索引對稱,我意識到,數組索引是對稱的,換句話說,x[n]是一樣的n[x]。例如,請考慮下面的代碼:爲什麼在指數和名稱

#include <iostream> 

int main() 
{ 
    int x[] = {0, 1, 2, 3, 4}; 
    std::cout << x[3] << ' ' << 3[x]; // both display 3 
} 

Live on Coliru

這確實是符合標準的,如果是,有沒有什麼好的理由?如果您可以提供標準參考/報價,則可獲得獎金。

PS:代碼編譯細跟GCC和鐺

+1

這是一種欺騙。搜索... – NathanOliver

+0

@NathanOliver請關閉它,如果你找到它,我幾乎可以肯定,應該有喜歡它的另一個問題,但無法找到它。 – vsoftco

+2

謝謝@firststep。現在添加到我的最愛。 – NathanOliver

回答

2

的原因是,在C(和C++)兩個表達式等於*(x + 3) == *(3 + x)

+0

的指針,是的,但我看到'[]'更像一個操作(儘管它顯然不是莢)。 – vsoftco

+0

C風格的數組衰變在許多情況下指針。這是我相信的其中之一。 –

相關問題