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

>>> In message [ruby-dev:8498] Re: BIGDN
    On Thu, 2 Dec 1999 18:48:22 +0900, toyofuku / juice.or.jp said:

豊福>   豊福です。HP-UX 10 で試してみました。
豊福> 
豊福>   やはり RSIFT(x,y) は ((x)>>(y)) になっていたので

これは、

  configure を実行した結果、出来た config.h が
  #define RSHIFT(x,y) ((x)>>y)
  という定義だった

と言う意味ですね。(まづい!)
# config.cache があったとか、そういう事ではないですね。

configure.in では、

  int
  main()
  {
    if (-1==(-1>>1))
      return 0;
    return 1;
  }

のようにして、0が返るか否かをテストしてますが、
-1==(-1>>1)が、定数式同士の比較だと、hptu-10.x でも
一致してしまうのかも知れません。

configure にもうひと工夫必要?

豊福> おかしいと思い調べたところ
豊福> 
豊福>   main()
豊福>   {
豊福>     long x = -2;
豊福>     printf("%x\n", x>>16);
豊福>     printf("%x\n", x>>(sizeof(short)*8));
豊福>     printf("%x\n", x>>((int)(sizeof(short))*8));
豊福>   }
豊福> 
豊福> の結果が
豊福> 
豊福>   ffffffff
豊福>   ffff
豊福>   ffffffff
豊福> 
豊福> となりました。

この場合の、x が符号なしあるいは、負でない場合の結果は
処理系依存だそうです。ですが、、

豊福>   sizeof(short) が unsigned なの(?)で x も
豊福> unsigned に変換されたのかも。

、、式の右辺の符号の有無はどう考えても、関係ないように思えます。
(たしかに、sizeof(short).type は size_t で unsigned だけど)
#「処理系に依存」しても動作は一貫してなきゃだめぢゃん!>hp

もしかして、

  int
  main()
  {
    if (-1==(-1>>(unsigned)1))
      return 0;
    return 1;
  }

こんな事???

#左から0が入って来る右シフトといい、unsigned な char といい
#他との互換性を損なうためにしているとしか思えん。 ~\(@@)/~

	えぐち