gcc对什么是左值感到困惑?

时间:2010-12-07 15:40:57

标签: c gcc standards lvalue

gcc在赋值错误中给出了无效的左值:

-2[(size_t *)new] = 0;

将代码更改为以下内容使其消失:

((size_t *)new)[-2] = 0;

但据我所知,两者在C中都是100%等效的。在非左值表达式中使用前者没有问题。这只是gcc中的一个错误吗?我用几个版本对它进行了测试,得到了相同的结果。

1 个答案:

答案 0 :(得分:7)

我很蠢。 []绑定比-更紧密,因此这个表达式实际上是读取索引2并取消它。

相关问题