#包括<;iostream>;
使用名称空间std;
int main()
{
int-arr[3]={10,20,30};
cout<;<;arr[-2]<;<;endl;
法院<;<;-2[arr]<;<;<;endl;
返回0;
}
输出:
4196160
-30
此处arr[-2]
超出范围且无效,导致未定义的行为。
但是-2[arr]
的计算结果是-30
。为什么?
arr[-2]
是否等同于-2[arr]
-2[arr]
被解析为-(2[arr])
。在C(和C++中,忽略重载), x[y] 是 *(x+y)代码(参见本问题中的更多讨论),这意味着 2 [ARR] >等于 ARR [2 ] >