C语言负数除以正数,与正数除以负数,正负有谁定呢?

抛砖引玉

C语言负数除以正数,与正数除以负数或者负数除以负数的余数和商,正负有谁定呢?

-3 / 2 = ?;

-3 % 2 = ?;

3 / (-2) = ?;

3 % (-2) = ?;

(-3) / (-2) = ?;

(-3) % (-2) = ?;

前提假设

假定我们让 a 除以 b,商为 q,余数为 r:q = a / b;r = a % b;这里,不妨假定 b 大于 0。我们希望 a、b、q、r 之间维持怎样的关系呢?

最重的一点,我们希望 q * b + r == a,因为这是定义余数的关系。

如果我们改变 a 的正负号,我们希望这会改变 q 的符号,但这不会改变 q  的绝对值。

当 b>0 时,我们希望保证 r >= 0 且 r < b。

例如,如果余数用于哈希表的索引,确保它是一个有效的索引值很重 。这三条性质是我们认为整数除法和余数操作所应该具备的。很不幸的是,它们不可能同时成立。

 

举例说明

考虑一个简单的例子:3/2,商为1,余数也为1。此时,第1条性质得到了满足。(-3)/2 的值应该是多少呢?如果满足第2条性质&

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值