KDOC 115: 負の値が関わる剰余挙動の違いを試す
この文書のステータス
- 作成
- 2024-03-01 貴島
- レビュー
- 2024-03-24 貴島
言語によって異なる挙動
負の値に対する剰余をしたときの値は、プログラミング言語によって異なる。軽く試したところ2パターンあった。
Go言語。
fmt.Println(-8 % 5)
fmt.Println(8 % -5)
-3
3
C言語。
printf("%d\n", -8 % 5);
printf("%d\n", 8 % -5);
-3
3
Emacs Lisp。
(format "%s\n%s" (number-to-string (% -8 5)) (number-to-string (% 8 -5)))
-3
3
Python。
print(-8 % 5)
print(8 % -5)
2
-2
Ruby。
sprintf("%d\n%d", -8 % 5, 8 % -5)
2
-2
関連
抽象。
- 同じ記号の演算が、境界的な入力で実装ごとに異なる結果を返す
関連。
- 疑問: 試した2パターン以外が存在するか