えぐち@エスアンドイー です。

>>> In message [ruby-dev:8549] Re: BIGDN
    On Mon, 6 Dec 1999 21:29:04 +0900, toyofuku / juice.or.jp said:

豊福>   豊福です。
豊福> 
豊福> [ruby-dev:8548] えぐちさん
豊福> > 大体、y の型(符合)が結果に影響を与えて良いとは ANSIC は
豊福> > 言っていないので、hpux-10.x はその点が非準拠に思えます。
豊福> 
豊福>   私もこれは処理系のバグの範衷のような気がします。
豊福> 一昔前の K&R に「unsigned が入っている演算はもう一方も
豊福> unsigned にして云々」と書いてあったような気がするんです
豊福> がそれをシフト演算にも適用したのかなと思ってました。

ANSIC 以前の K&R は確かに、そんな風にも読める書き方したましたね。

豊福> 最近の K&R をちらっと見たのですがそれらしい記述は見つ
豊福> かりませんでした。

2版の 付録C 変更の要約に P-329 に、
「●  シフト式の型は左被演算数の型である」
とあります。
ただこれは、sizeof の方を言っているようにも読めます。

豊福> > (x)<<(signed int)(y) だと、hpux では両方に SAR に相当する
豊福> > コードを生成してしまう気がします。(手元にないので未検証)
豊福> 
豊福>     ((unsigned)-1)>>((signed)1) != ((unsigned)-1)
豊福> 
豊福> になりはしないかという話ですよね。一応 HP-UX10 では
豊福> 大丈夫のようです。

これは、[ruby-dev:8550] の通り、大丈夫ぢゃないですね。

豊福> (signed は使うとエラーになる予約語になってました)

あれま! ^^;;

こうしてみると、従来からの RSHIFT() の定義って良く出来てますね。(^^)

	えぐち