From: Tadashi Saito Date: 2003-08-27T02:36:00+09:00 Subject: [ruby-list:38287] Re: -1 / 10 #=> -1 斎藤です。 ----- Original Message ----- From: "Yukihiro Matsumoto" Sent: Wednesday, August 27, 2003 1:33 AM Subject: [ruby-list:38286] Re: -1 / 10 #=> -1 > Pythonにならいました。C99までは負の整数の割り算はきちんと定 > 義されていなかったように思います。で、93年に「こっち」と思っ > た方と逆に決まったと言う。きちんと調べてないんで、勘違いが含 > まれてるかも。 その通りのようです。「Cでは-1/10==0」は、完全に僕の思い込みでした。 JISX3010(ISO C90)の6.3.5から引用すると、 「一方のオペランドが負の値をもつ場合、/演算子の結果が代数的な商以下の  最大の整数とするか、又は代数的な商以上の最小の整数とするかは、  処理系定義とし、%演算子の結果の符合も処理系定義とする。」 だそうです。確かなのは「(a/b)*b + a%b == a」というだけですね。 上記規格に対する追補1でも、変更はないようです。 規格書をチェックし忘れたのは自分の単純なミスです。すみません。 C99の規格書自体は手元にないのですが、 http://seclan.dll.jp/c99d/c99d05.htm#dt19990607 を見ると、C99で「割り算の結果はすべて 0 方向に切り捨て」になった 旨が書いてありますね。 それでも、最初の規格で「処理系定義」になっていたのなら、 その部分にこだわってもほとんど意味がないですね。 お騒がせしました。 -- 斎藤ただし