2015-07-02 27 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