为了账号安全,请及时绑定邮箱和手机立即绑定

带负值的模算子

带负值的模算子

C++
潇湘沐 2019-07-06 16:36:23
带负值的模算子为什么这些行动:std::cout << (-7 % 3) << std::endl;std::cout << (7 % -3) << std::endl;给出不同的结果?-1 1
查看完整描述

3 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

这个标志在这种情况下(即当一个或两个操作数为负数时)是实现定义的。规范在第5.6/4节(C+03)中说,

二进制/运算符产生商,二进制%运算符从第一个表达式除以第二个表达式得到余数。如果/或%的第二个操作数为零,则行为未定义;否则(a/b)*b+a%b等于a。如果没有,则剩余部分的标志是实现定义的。.

就C+03而言,这就是语言所要说的。


查看完整回答
反对 回复 2019-07-06
?
LEATH

TA贡献1936条经验 获得超6个赞

a % b

在c+默认情况下:


(-7/3) => -2

-2 * 3 => -6

so a%b => -1


(7/-3) => -2

-2 * -3 => 6

so a%b => 1

在python中:


-7 % 3 => 2

7 % -3 => -2

在c+到python中:


(b + (a%b)) % b


查看完整回答
反对 回复 2019-07-06
  • 3 回答
  • 0 关注
  • 343 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信