2

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

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

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

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

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

4

1 回答 1

7

我真笨。[]比 绑定得更紧密-,所以这个表达式实际上是读取索引 2 并否定它。

于 2010-12-07T15:44:28.630 回答