相同逻辑的不同机器代码

时间:2014-11-19 08:36:12

标签: c machine-code

考虑以下代码

char love[4]={'l','o','v','e'};

如果不同,爱情[1]和*(爱情+ 1)的机器代码是相同还是不同?

1 个答案:

答案 0 :(得分:4)

如果您要求引用相同的内存位置,答案是肯定的。 *(1+love)1[love]也是如此。

如果你问的是编译器是否会生成相同的机器语言,那完全取决于编译器。 ISO C标准没有规定这种详细程度。

它通常更关注效果而不是实现细节。

鉴于所有四种可能性意味着相同的事情,如果编译器生成不同的机器代码,我会感到惊讶 - 我希望体面的编译器生成最有效的版本所有情况。但是,如上所述,这绝不是强制性的。