From: YANAGAWA Kazuhisa Date: 2004-10-02T22:53:35+09:00 Subject: [ruby-dev:24402] Re: "a".sum(32) is 0 In Message-Id: <1096723804.528548.31708.nullmailer@x31.priv.netlab.jp> Yukihiro Matsumoto writes: > gdbでは > > p 1<<32 > > が0を表示しますし(前のメールで0になると思った原因)。でも、 > > p 97 & ((1<<32)-1) > > は97を表示するなあ。 そりゃ 1 を 32bits 左シフトしたら有効桁は 33bits あるし,ってことでしょ うか.int が 32bits なら 1<<32 は 0 に「なってもおかしくない」. ちなみにうちでは(i386-unknown-freebsd) (gdb) p 1<<32 $1 = 0 (gdb) p (1<<32)-1 $2 = -1 # 規格上は左右共にビット幅一杯のシフトは未定義動作だったはず. -- 柳川和久 @ 大阪市 . 大阪府 October 2, 2004 ♪ 小さな魔女がお買いもの 橋を渡って海の果て