表达式-2 [数组]如何工作?

时间:2016-01-12 17:28:42

标签: c++ c

我遇到了这个美女,但我真的不明白它!

#include <iostream>

using namespace std;

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

  return 0;
}

打印-30。 提前谢谢

编辑:由于“ - ”符号,与this question不重复。

1 个答案:

答案 0 :(得分:12)

这很有趣也很简单。 -array[2]-*(array + 2)相同,与-*(2 + array)相同,与-2[array]相同,即-30。

对于使用方括号和数组(With arrays, why is it the case that a[5] == 5[a]?)的一般情况,已经存在重复,但这里的怪癖是前面的一元-运算符

假设实际数组索引为-2,如array[-2],似乎很直观。

但由于运营商优先规则,这种情况不会发生:

  • operator []的优先级高于一元-,因此首先应用。

我已经用传统的&#39;数组订阅使这更直观

  • 因为我们在下标之前没有否定数组,所以我们不会以同样的方式否定数组。