[797] Re:左辺値としての配列名
投稿者:(ぱ)
2007/02/20 02:13:25
>配列名は式の中では先頭要素へのポインタ(右辺値)に読み替えられる、
>という規則は、代入演算子の左側のような、
>「左辺値が要求される場所」においてもそうなのでしょうか?
JIS X3010の6.2.2.1によれば、
| 左辺値がsizeof演算子のオペランド、単項&演算子のオペランド、文字配列を初期化
| するのに使われる単純文字列リテラルまたはwchar_tに適合する要素型をもつ配列を
| 初期化するのに使われる文字列リテラルである場合を除いて、型"~型の配列"をもつ
| 左辺値は、型"~型へのポインタ"を持つ式に型変換する。
とあります。
もし、代入演算子の左側のような「左辺値が要求される場所」においては配列から
ポインタへの読み替えが行われないのだ、とするのなら、上記の3つの条件の中に
単項&演算子のオペランドを含める必要はないはずです。&演算子のオペランドは
もともと左辺値が要求される場所だからです。
ということで、上記3つの箇所を除いて、(左辺値が要求されようがされまいが)
式の中では配列はポインタに読みかえられる、と解釈するのが自然ではないでしょうか。
# とはいうものの、「変更可能な左辺値」の定義からわざわざ配列が除かれている
# ところからすると、配列に代入できないのは変更可能な左辺値ではないからだ、
# という解釈もできるような気が…