2015-07-02 29 views
-2

下面的代碼索引一個int?這個怎麼用?

#include<stdio.h> 

int main() 
{ 
    int arr[] = {10,20,30}; 
    cout << -2[arr]; 
    return 0; 
} 

打印-30。怎麼樣?爲什麼?

+5

'cout << - 2 [arr];'我永遠不會讓代碼審查過程中發生混亂......無理由。 – Borgleader

+0

我謙虛地不同意這個騙局。這個問題涉及到顯着差異,涉及到它的運營商優先級和對UB的誤解,如(現在刪除的)註釋中所示。我要求重新考慮這個案子。 –

回答

3

在C和C++,2[arr]其實是一回事arr[2]

由於運營商的優先級,-2[arr]被解析爲-(2[arr])。這意味着整個表達式評估爲否定arr的第三個元素,即-30