4

以下代码

a[10] == 10[a]

结果似乎true是 C 语言

C编译器如何将它们视为相同的?

4

2 回答 2

6

编译器看到如下:

a[10] == *(a + 10) == *(10 + a) == 10[a]

检查这个以获得更好的解释。

于 2013-02-18T09:46:33.400 回答
2

a[10] 表示:“从内存地址 10 开始,添加 a 并引用结果位置” 10[a] 表示:“从内存地址 a 开始,添加 10 并引用结果位置”

由于 a + 10 与 10 + a 相同,因此两个表达式将引用相同的内存位置。

于 2013-02-18T09:50:34.583 回答