ちと勘違いしてました。VC6でWinMainで試してました。
C++だと変数の参照を返すからコンパイル通るんだ…。
ここはC言語スレでしたかorz
たしかにCだと
b ? c = d : e = f;
これは書けませんね。
ただ、演算子の優先順位というに点だけ着目すると、Cでは
(b ? (c = d) : e) = f;
こうなって左辺値に不適合でエラー
C++だと
b ? (c = d) : (e = f)
このように実動作しているようです。直感的にはC++流の解釈の方が
素直な気がしますが、三項演算子の コロン以降だけを特別処理している
気がしてならない…。
スレ汚し失礼しました。C++スレに行って来ます。