c++ - 为什么数组索引的索引和名称是对称的

标签 c++ arrays

今天查看一些奇怪的混淆竞赛代码,我意识到数组索引是对称的,换句话说,x[n]n[x] 相同。例如,考虑下面的代码:

#include <iostream>

int main()
{
    int x[] = {0, 1, 2, 3, 4};
    std::cout << x[3] << ' ' << 3[x]; // both display 3
}

Live on Coliru

这确实符合标准吗?如果是,有什么充分的理由吗?如果您能提供标准引用/报价,那就更好了。

PS:代码可以用 gcc 和 clang 很好地编译

最佳答案

原因是在 C(和 C++)中,两个表达式都等于 *(x + 3) == *(3 + x)

关于c++ - 为什么数组索引的索引和名称是对称的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39732092/

相关文章:

java - 为什么我的二维数组克隆不止一次?

c++ - OS X 上 std::enable_shared_from_this<> 的编译错误

c++ - 如何在不转换回基类类型的情况下返回其派生类型的对象?

c++ - 从没有空格的文本文件中读取数字

javascript - 循环中暂停并重新启动setTimeout

java - Arraylist<String[]> 如何访问?

arrays - 在 Postgres DB 中使用大量 id 的 Django 查询过滤器

C++函数返回两个char数组的相同索引元素

c++ - 如何拥有 "constexpr and runtime"别名

c++ - 对使用 STL 并行算法的用户有何限制?