ごとけんです

いろいろ考えたんですけど (-5)/2 の値についてはむしろ好ましい
ものだと思うにいたりました。かなり前にも考えてたはずなんです
が、ようするに、a%b において a を1つずつ変化させた時、零を跨
ごうが跨ぐまいが、a%b の値は周期的になってることが物理や工学
ではしばしば必要とされるので、それに合わせて考えれば現状の
(-5)/2 は実に使いやすい。

しかしその字句解析についてやや疑問で -5/2 は -(5/2) と解釈さ
れる方が良いと思います。一般に -`term' は 0-`term' となって
欲しいからです。結合強度の問題かしら。

いずれにせよ負の数の剰余は数学のデフォルトでは未定義なので正
木さんもいうように特に自然なものは存在しないでしょうね。

-- Gotoken

% echo 'main(){int i; for(i=-10;i<10;i++){printf("%4d,%4d,%4d\n", i,i/3,i%3);}}' | gcc -x c - &&./a.out -10, -3, -1 -9, -3, 0 -8, -2, -2 -7, -2, -1 -6, -2, 0 -5, -1, -2 -4, -1, -1 -3, -1, 0 -2, 0, -2 -1, 0, -1 0, 0, 0 1, 0, 1 2, 0, 2 3, 1, 0 4, 1, 1 5, 1, 2 6, 2, 0 7, 2, 1 8, 2, 2 9, 3, 0 % ruby -e 'for i in -10..10 do printf("%4d,%4d,%4d\n", i,i/3,i%3);end' -10, -4, 2 -9, -3, 0 -8, -3, 1 -7, -3, 2 -6, -2, 0 -5, -2, 1 -4, -2, 2 -3, -1, 0 -2, -1, 1 -1, -1, 2 0, 0, 0 1, 0, 1 2, 0, 2 3, 1, 0 4, 1, 1 5, 1, 2 6, 2, 0 7, 2, 1 8, 2, 2 9, 3, 0 10, 3, 1