繁体   English   中英

与%运算符混淆

[英]Confused with % operator

我有这行简单的代码,显示为余数5

Console.WriteLine(5 % 8);

%运算符显示第一个数字和第二个数字相除后的余数。 因此, 5 / 8 = 0,625 上面代码的提示不应该是6而不是5吗? 在Visual Studio中进行测试时为什么会看到5?

8“干净地”变成5了多少次? 零次。

5 / 8 = 0 (int division)

当您做5 ÷ 8 ,剩下多少项目? 5。

5 % 8 = 5 (modulus division)

另一种解释方法是:

你有5个苹果。 请在8组中分配这些苹果,但是您必须确保每个组都有相同数量的苹果。

你不能那样做。 您的苹果少于分组数目。 你不能给任何任何苹果。

而且由于您没有捐出任何苹果,所以剩下 5个苹果。 那是你的余数。

一切都遵循整数除法的基本规则。 对于整数xy我们有:

q = x / y;
r = x % y;

基本规则是:

  • qr都是整数
  • q * y + r == x
  • 不精确时,除法将取整为零

现在,您已经了解了基本规则,可以计算出5 / 85 % 8

5 / 8是整数。 确切的值为0.625 ,但这不是整数,因此我们朝零取整并得到0 所以q0

要计算r,我们必须求解q * 8 + r = 5 ,这很容易解决: r = 5是解决方案。

(请注意,还有一些除零的基本规则,依此类推,您通常不必担心。)

模数不给您商的第一个数字,但是第二个数字后的余数除以第一个。

8根本不算入5,所以剩下的就是全部5。

请参阅此答案以获取其他几个很好的解释:

第一个数字较小时,模运算如何工作?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM