簡體   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