1.C++中,取模操作必须对两个整形变量进行,不能有小数
int main()
{
double a = 3.14;
double b = 1.1;
int c = 2;
std::cout << a % c;
//Invalid operands to binary expression ('double' and 'int')
std::cout << c % a;
//Invalid operands to binary expression ('int' and 'double')
std::cout << a % b;
//Invalid operands to binary expression ('double' and 'double')
}
2.当有0参与时
- 0作为除数,此时编译不通过
- 0作为被除数,对非零数取模,得到的结果总为0
int main()
{
int c = 2;
int d = 0;
std::cout << d % c;
//output 0
}
3.当有负数参与时
通过确定商来确定取模的余数,首先介绍C++中的除法,在C++中,采用的是向0取整的方法,通俗地说,就是去掉小数部分
。
例如:
int main()
{
std::cout << -7/4;//output -1
std::cout << 7/-4;//output -1
std::cout << -7/-4;//output 1
}
因为 7/4 = 1.75,去掉小数部分就剩下1了,正负号
再由7和4的符号决定。
所以,当我们准确计算出商以后,就可以通过 余数 = 被除数 - 除数 * 商
得到了。
int main()
{
std::cout << -7%4; //output -3, because -7 - 4 * (-1) = -3
std::cout << 7%-4; //output 3, because 7 - (-4) * (-1) = 3
std::cout << -7%-4; //output -3, because -7 - (-4) * 1 = -3
}
参考链接:[C++负数取模](https://www.cnblogs.com/widerg/p/7208041.html?utm_source=itdadao&utm_medium=referral)