C/C++中对于负数的取模(%)运算

0. 对于正数的取模运算

大前提是,取模运算的运算对象一定是整数。
当被除数和除数均为正整数时,取模运算遵循的法则为:A % B即为B整除A后的余数,如5 % 2的结果为16 % 10的结果为6

1. 对于负数的取模运算

网上有取模的公式,我在这里先给出公式:
A % B = A - A / B * B

公式计算会相对复杂一些,其实可以借助C99标准来简单记忆负数的取模运算规律:
取模运算结果的正负是由左操作数的正负决定的。如果%左操作数是正数,那么取模运算的结果是非负数;如果%左操作数是负数,那么取模运算的结果是负数或0。
也就是说,在进行有负数参与的取模运算时,我们可以这样做:先将被除数和除数都按照正数来进行运算,然后观察被除数(左操作数)的正负,若被除数为正,则运算结果为正,若被除数为负,则运算结果为负。运算结果的正负与右操作符无关。

下面借助代码来实际验证一下:

#include <iostream>

using namespace std;

int main()
{
	cout << 5 % 2 << endl;
	cout << 5 % -2 << endl;
	cout << -5 % 2 << endl;
	cout << -5 % -2 << endl;
	return 0;
}

输出结果为

1
1
-1
-1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吮指原味张

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值