首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表达式-2[数组]是如何工作的?

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

Stack Overflow用户
提问于 2016-01-12 17:28:42
回答 1查看 295关注 0票数 7

我偶然遇到了这位美女,但我真的不明白!

代码语言:javascript
复制
#include <iostream>

using namespace std;

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

  return 0;
}

它打印-30。提前谢谢你

编辑:不是this question的副本,因为"-“标志。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-12 17:30:28

这既有趣又简单。-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 []比一元-具有更高的优先级,因此首先应用它。

我展示了“常规”数组订阅的转换,以使这更直观。

  • 由于我们在订阅数组之前不对其进行否定,所以我们不会以相同的方式对2进行否定。
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34750128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档