2
GCC是给我无效的左值在分配错误的:gcc困惑什么是左值?
-2[(size_t *)new] = 0;
代码更改为下面的操作就走开:
((size_t *)new)[-2] = 0;
但据我所知道的,都是100%等价于C. gcc在非左值表达式中使用前者是没有问题的。这仅仅是gcc中的一个错误?我已经测试了几个版本,并得到了相同的结果。
GCC是给我无效的左值在分配错误的:gcc困惑什么是左值?
-2[(size_t *)new] = 0;
代码更改为下面的操作就走开:
((size_t *)new)[-2] = 0;
但据我所知道的,都是100%等价于C. gcc在非左值表达式中使用前者是没有问题的。这仅仅是gcc中的一个错误?我已经测试了几个版本,并得到了相同的结果。
我很笨。 []
比-
更紧密,所以这个表达式实际上是读取索引2并且否定它。
每当我想我知道C,我看到这样的东西,去“wtf?” – 2010-12-07 15:42:35
我知道有可能像这样访问数组,但我从来不知道有人真的这样做...... – musiKk 2010-12-07 15:47:36