今天查看一些奇怪的混淆竞赛代码,我意识到数组索引是对称的,换句话说,x[n]
与 n[x]
相同。例如,考虑下面的代码:
#include <iostream>
int main()
{
int x[] = {0, 1, 2, 3, 4};
std::cout << x[3] << ' ' << 3[x]; // both display 3
}
这确实符合标准吗?如果是,有什么充分的理由吗?如果您能提供标准引用/报价,那就更好了。
PS:代码可以用 gcc 和 clang 很好地编译
最佳答案
原因是在 C(和 C++)中,两个表达式都等于 *(x + 3)
== *(3 + x)
。
关于c++ - 为什么数组索引的索引和名称是对称的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39732092/