我遇到了这个美女,但我真的不明白它!
#include <iostream>
using namespace std;
int main() {
int array[] = {10, 20, 30};
cout << -2[array];
return 0;
}
打印-30
。
提前谢谢
编辑:由于“ - ”符号,与this question不重复。
答案 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;数组订阅使这更直观