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 に答える