该代码段如何不会导致SIGSEGV或类似情况

-4 c

我遇到过这个有趣的片段.我说没有办法可以工作(没有崩溃).令人震惊的是,它在Linux(使用gcc编译)和OSX(llvm)上都运行"ok".更令人不安的是,Valgrind没有发现任何错误!

是什么赋予了?

int main(void) {
  int a[3];
  2[a] = 1;
}
Run Code Online (Sandbox Code Playgroud)

Ere*_*ith 5

简而言之,编译器将表单中的任何内容翻译x[y]*(x + y).因此,2[a]转化为*(2 + a)这是一样*(a + 2)a[2].