朝電車の中で、w-zero3[es]でちろっと書いた記事が、リンク元の記録を見る限り500以上のアクセスを集めてちょっとびっくりした。ブックマークやトラックバックもついてるし*1。
で。
ちょっと解説じみたことを。
(a<b?a:b)=0
だと妖しげだが、
int & smaller( int & a, int & b ) { if (a<b){ return a; } else { return b; } }
という関数があれば
int a=1, b=2; smaller(a,b)=3;
と書けるのは普通というか、書けないとおかしい。
条件演算と smaller 関数は同等なので、条件演算は左辺値になる。
で。
コメント欄でご指摘いただいたとおり(ご指摘ありがとうございます>id:hzkrさん)、C言語では条件演算の結果に代入できない。これは、C言語には参照型がないからで、前述の smaller 関数も書けない。
ということに、電車の中では気づいてなかった。とほほ。
同じ理由で hzkr さんのおっしゃるとおり、BCPL は有望じゃないと思う。
さらに。
dankogaiさんが書いておられるとおり(トラックバックをいただく前に気づいていたのに、くやしー)、perl も (a<b?a:b)=0 が通る。と思ったら変数の前に $ が要るのか。とほほ。
python にはこの手の演算子がないような気がするんだけどどうだろう。PHPは未調査。
vbscript にもなさそう。
あと気になるのは C# かな。
*1:因果関係が逆か