C11標準からの引用:
アレイのサブスクライブ(§6.5.2.1)
添え字演算子の定義は、
[]
とE1[E2]
同じです(*((E1)+(E2)))
。
なぜ括弧がE1
必要なのか(C89標準では欠落していた)、つまり、どの式が(*(E1+(E2)))
異なる可能性があるのかを知りたいのですが(*((E1)+(E2)))
?
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n841.htmによると、わかりやすくするために挿入されています。2つの式は構文的に同等です。
パブリックコメント番号PC-UK0103
コメント1.
カテゴリー:編集上の変更/非規範的貢献
委員会ドラフトサブセクション:6.3.2.1
タイトル:配列添え字の例
詳細な説明:パラグラフ2は、混乱を避けるために、
(*(E1+(E2)))
「」を「」に置き換える必要があります。(*((E1)+(E2)))
はい、構文チャートによって非常に明確になっていることは知っていますが、段落2の現在の表現は非常に紛らわしいものです。