1. ホーム
  2. c

[解決済み] 整数の割り算の動作はどうなっていますか?

2022-02-05 15:47:19

質問内容

例えば

int result;

result = 125/100;

または

result = 43/100;

結果は常に除算の階数になるのでしょうか?どのような動作が定義されていますか?

どのように解決するのですか?

<ブロッククオート

結果は常に除算の階数になるのでしょうか?どのような動作が定義されていますか?

ちょっと違う。床ではなく、0に向かって丸めるのです。

6.5.5 乗算演算子

6 整数を割るとき、/演算子の結果は代数的商になります。 分数部分は破棄されます。 88) 商a/bが表現可能な場合、以下の式となります。 (a/b)*b + a%b は a に等しいものとする。

と対応する脚注があります。

  1. これはしばしば''truncation toward zero''と呼ばれる。

もちろん、注意すべき点は2つ。

3 オペランドには通常の算術変換が行われます。

とします。

5 演算子 / の結果は を除算した商 最初のオペランドを2番目のオペランドで割ったもの。 演算子の結果は の余りです。 どちらの操作でも、もし 2番目のオペランドの値が0である場合。 の動作は未定義です。

[注:強調は私です]。