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

猜你喜欢

转载自blog.csdn.net/mahoon411/article/details/114639601