带负值的模算子为什么这些行动:std::cout << (-7 % 3) << std::endl;std::cout << (7 % -3) << std::endl;给出不同的结果?-1
1
3 回答
红糖糍粑
TA贡献1815条经验 获得超6个赞
二进制/运算符产生商,二进制%运算符从第一个表达式除以第二个表达式得到余数。如果/或%的第二个操作数为零,则行为未定义;否则(a/b)*b+a%b等于a。 如果没有,则剩余部分的标志是实现定义的。.
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
- 3 回答
- 0 关注
- 343 浏览
添加回答
举报
0/150
提交
取消