因为编译器对于数组是转换为指针的。
a[6]会被转为 *(a+6),a[3+3]被转为*(a+3+3),又因为对于常量运算式会计算出最后结果,所以最终也会转为*(a+6)。
同样的道理,6[a]被转为*(6+a),和*(a+6)等价。
上面的这些转换在编译的语法分析阶段就完成了,在语法分析生成的中间表示已经能看到各个表达式都被翻译成同样的中间表示。
a[6]会被转为 *(a+6),a[3+3]被转为*(a+3+3),又因为对于常量运算式会计算出最后结果,所以最终也会转为*(a+6)。
同样的道理,6[a]被转为*(6+a),和*(a+6)等价。
上面的这些转换在编译的语法分析阶段就完成了,在语法分析生成的中间表示已经能看到各个表达式都被翻译成同样的中间表示。
原文地址:http://blog.sina.com.cn/s/blog_48cae625010004pv.html