5

c99標準では、モジュロ演算の結果は第1オペランドと同じ符号を持つとされています。だから-9 % 7 = -29 % -7 = 2

私は1冊の本でc89標準が実装に依存していることを読みました。だから-9 % 7降伏-2するか5??? 残りはどのくらいでしょ-9 / 75か?

4

2 に答える 2

7

2つの数字aとを考えてみましょうb

q=a/bと剰余r=a%bは方程式を満たしますa == q*b + r

-9%7が5を生成するC89の(仮想の)実装は、-9/7が-2として計算される実装です。

数学的(除法の)除算rは、正であり、よりも小さいように制約されますb。C99は、とと同じ符号でaあり、厳密にはとの間-bであるように制約しますb。それはすべて慣例の問題です。

于 2012-11-03T10:34:34.893 に答える
4

%演算子は次のように定義されます。

a == (a / b * b) + a % b

それで

a % b = a - (a / b * b)

剰余演算子としての%

(C99のように)/に向かって丸める場合:0

-9 % 7 == -2

あなたが-9 / 7 == -1そうしているの%-2

-9 % 7 == -9 - (-9 / 7 * 7) + 9 == -9 + 7 == -2 

モジュロ演算子としての%

/マイナス無限大に向かって丸める場合:

-9 % 7 == 5

あなたは-9 / 7 == -2そう%です5

-9 % 7 == -9 - (-9 / 7 * 7) + 9 == -9 + 14 == 5
于 2012-11-03T10:35:55.787 に答える