C++中的取余与取模

目前为止,我并没有找到C++中数学意义上的取模操作。%是一种取余运算。

假设r = a mod b,关于取模与取余的一点概念有:

  • 公式都是:c = a / br = a - c * b

  • 对于a / b >= 0的结果,取模和取余等价

  • 如果a / b < 0,那么对于取模,c向负无穷舍入;对于取余,c向0舍入

那么,C++中什么时候会用到取模?

在类型转换时,当把一个超出范围的值v赋给一个无符号类型时,其计算方法是:

  1. 先确定无符号类型的可取数n

  2. 最终结果 = v mod n

比如,把-1赋值给unsigned char时,计算公式是:-1 mod 256,结果是255。

而如果把-1赋值给unsigned int时,结果则是4294967295。今天出了一个bug,原因就是错误地把负数强制转换成了unsigned int,本应该转换成unsigned char,但二者的结果大不相同。

转载于:https://www.cnblogs.com/demon90s/p/6536550.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值