簡體   English   中英

模運算符如何工作?

[英]How does the modulus operator work?

假設我需要格式化數組的輸出以顯示每行固定數量的元素。 我如何使用模數運算來做到這一點?

使用 C++,下面的代碼可用於每行顯示 6 個元素,但我不知道它是如何以及為什么工作的?

for ( count = 0 ; count < size ; count++)
{
    cout << somearray[count];
    if( count % 6 == 5) cout << endl;
}

如果我想每行顯示 5 個元素怎么辦? 我如何找到所需的確切表達?

在 C++ 表達式中, a % b返回 a 除以 b 的余數(如果它們是正數。對於結果的負數符號是實現定義的)。 例如:

5 % 2 = 1
13 % 5 = 3

有了這些知識,我們可以嘗試理解您的代碼。 條件count % 6 == 5表示當除法計數的余數為 5 時將寫入換行符。 這種情況多久發生一次? 正好相隔 6 行(練習:寫數字 1..30 並在滿足此條件的數字下划線),從第 6 行(計數 = 5)開始。

要從您的代碼中獲得所需的行為,您應該將條件更改為count % 5 == 4 ,這將使您每 5 行換行一次,從第 5 行(count = 4)開始。

基本上模數運算符給你余數簡單的數學示例 11 除以 3 的余數/余數是多少? 答案是 2

對於同樣的事情 C++ 有模運算符 ('%')

解釋的基本代碼

#include <iostream>
using namespace std;


int main()
{
    int num = 11;
    cout << "remainder is " << (num % 3) << endl;

    return 0;
}

哪個會顯示

余數為 2

這個 JSFiddle 項目可以幫助您了解模數是如何工作的: http : //jsfiddle.net/elazar170/7hhnagrj

模數函數的工作原理是這樣的:

     function modulus(x,y){
       var m = Math.floor(x / y);
       var r = m * y;
       return x - r;
     }

它給你一個除法的剩余部分。

int c=11, d=5;
cout << (c/d) * d + c % d; // gives you the value of c

您可以將模運算符視為給您一個余數。 count % 6 將 6 盡可能多地除以計數,並為您提供從 0 到 5 的余數(這些是所有可能的余數,因為您已經盡可能多地除以 6)。 數組的元素都在for循環中打印出來,但是每次余數為5(每6個元素)時,它輸出一個換行符。 這為您提供每行 6 個元素。 對於每行 5 個元素,請使用

如果(計數 % 5 == 4)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM