为什么结果-30来自这个功能?

时间:2016-04-09 14:33:03

标签: c++

#include <iostream>

using namespace std;

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

3 个答案:

答案 0 :(得分:5)

对于任何数组(或指针)a和索引i,表达式a[i]等同于*(a + i)。由于commutative添加的性质,表达式*(a + i)*(i + a)相同,相当于i[a]

这意味着你的表达式-2[Array](实际上是-(2[Array]),这要归功于一般的否定运算符比索引运算符低operator precedence)与-Array[2]相同。换句话说,你正在采用数组的第三个元素(记住数组索引是零基础)并否定它。

答案 1 :(得分:5)

2[Array]会返回Array中位置2的元素,即30。你在前面放了-,所以你得到-30

答案 2 :(得分:1)

[]在“ - ”上有运算符优先级,所以

首先解决2 [数组],然后得到答案30 - (2 [数组])现在把值2 [数组] - (30) 所以你得到-30