为什么c ++中的x [y] == y [x]?

Gab*_*iel -3 c c++ arrays

可能重复:
在C数组中为什么这是真的?a [5] == 5 [a]

有人告诉我这个...我起初并不相信它们但确实有效.如果x和y在整个代码中没有变化,为什么这会起作用:

int x [5] = { 0,1,2,3,4};
int y = 3;

if(x[y] == y[x]){
    cout << "Why..." << endl;
}
Run Code Online (Sandbox Code Playgroud)

x数组在索引y中的值是如何=数组y中的x索引值?但是没有y阵列.

seh*_*ehe 6

它总是正确的(对于普通算子==)

a[i]  --> *(a+i) --> *(i+a) --> i[a]
Run Code Online (Sandbox Code Playgroud)

因为int是内在的并且具有可交换运算符==,所以这总是正确的

  • 更重要的是,因为`int*`没有重载的`运算符[]`! (2认同)