模数运算符如何工作?

Tex*_*Qas 30 c++ modulus

假设我需要格式化数组的输出以在每行显示固定数量的元素.我如何使用模数运算来做到这一点?

使用C++,下面的代码适用于每行显示6个元素,但我不知道它是如何工作的?

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

如果我想每行显示5个元素怎么办?我如何找到所需的确切表达式?

KCH*_*KCH 38

在C++表达式中a % b返回a除以b的余数(如果它们是正数.对于负数,结果的符号是实现定义的).例如:

5 % 2 = 1
13 % 5 = 3
Run Code Online (Sandbox Code Playgroud)

有了这些知识,我们就可以尝试理解您的代码.条件count % 6 == 5意味着当除数计数的剩余部分为5时,将写入换行符.这种情况多久发生一次?相距6行(练习:写入数字1..30并在满足此条件的情况下加下划线),从第6行开始(计数= 5).

要从代码中获得所需的行为,您应该将条件更改为count % 5 == 4,从第5行(count = 4)开始,每5行会给出换行符.

  • "对于负数,结果的符号是实现定义的"在C++ 11中不是这样 - 请参阅ISO14882:2011(e)5.6-4或/sf/ask/531615591/. (6认同)

小智 6

基本上模数运算符给你余数简单的数学例子剩下的是11的剩余部分除以3?答案是2

同样的事情C++有 模数运算符('%')

解释的基本代码

#include <iostream>
using namespace std;


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

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

哪个会显示

余数是2


Gun*_*Foo 3

它给出了除法的余数。

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