From: "NARUSE, Yui" Date: 2010-10-18T14:04:49+09:00 Subject: [ruby-dev:42415] Re: [Ruby 1.9-Feature#3946][Open] Array#packのqQ指定子に機種依存サイズフラグ!を追加 2010年10月18日13:26 Tanaka Akira : > 2010年10月14日21:29 NARUSE, Yui : > >>> おそらく long long がない場合にはエラーになるべきだと思うんですが、 >>> その場合のエラーを決めないといけないんじゃないでしょうか。 >> >> ふむ。 >> 現実的には 64bit 以上の整数型がない環境ですよね。 > > 64bit 以上の整数型なら何でもいいんですか? > > それなら、なんで現状の q, Q ではいけないんですか? 以下の通り、64bit 整数型が無い場合と、long long が 64bit 超な場合に差が出ますね。 MSVC の場合に __int64 を使わず例外にするというパターンもありますが、 現実的には CRuby は常に LONG_LONG でラップしている訳で、 ラップ後を用いた方が現実に即していると考えています。 = long long がある == long long が 64bit q: 64bit q!: 64bit == long long が 64bit 超 q: 64bit q!: 64bit超 128bitとか = long long がない == 64bit 整数型がある → LONG_LONG はたぶん 64bit (eg. MSVC++) q: 64bit q!: どうあるべきか (現状: LONG_LONGに追従) == 64bit 整数型はないが64bit 超はある q: 64bit (自力で頑張る) q!: どうあるべきか (LONG_LONGに追従、無ければ例外) == 64bit 以上の型が無い q: 64bit (自力で頑張る) q!: 例外 (LONG_LONGもないはずである) -- NARUSE, Yui naruse@airemix.jp