2017-03-03 4 views
-5

Warum bekomme ich diese Ausgabe: 0 1 2 3 0 1 2 3 0 1 nach dem Ausführen des folgenden Codes? Findet die Modulo-Operation nicht den Rest nach der Division einer Zahl durch eine andere?Wie Modulus-Operation in C++ funktioniert?

#include <iostream> 
using namespace std; 
int main() 
{ 
for (int i=0; i< 10; ++i) 
cout << i % 4 << " "; 
} 
+3

Ja lesen, das ist, wie Modul funktioniert. – bejado

+3

** - 1 ** Welche Recherche haben Sie gemacht, bevor Sie gefragt haben? –

+0

Google gegoogelt ..... – Jack

Antwort

1

Ja, so funktioniert Modul. Die Ausgabe ist korrekt.

0 % 4 = 0 
1 % 4 = 1 
2 % 4 = 2 
3 % 4 = 3 
4 % 4 = 0 
5 % 4 = 1 
... 

Nimm die Nummer, entferne so viele 4 wie du kannst. Was übrig bleibt, ist der Modul.

1

Moduloperator gibt den Rest zurück, nachdem die erste Nummer durch die zweite Nummer geteilt wurde.

0 % 4 = 0 
1 % 4 = 1 
2 % 4 = 2 
3 % 4 = 3 
4 % 4 = 0 
5 % 4 = 1 
6 % 4 = 2 
7 % 4 = 3 
8 % 4 = 0 
9 % 4 = 1 
1

Es tut es.
0/4 = 0 Rest 0
1/4 = 0 Rest 1
und so weiter.

4

Die Antwort ist richtig. "%" bedeutet "Erinnerung". Der Operator% ist Restoperator. Der A % B Betreiber beantworten tatsächlich die Frage: „Wenn ich A geteilt durch B Integer-Arithmetik verwendet wird, was würde der Rest sein?“

Dividende = Quotient * Divisor + Rest

0 % 4 = 0 
1 % 4 = 1 
2 % 4 = 2 
3 % 4 = 3 
4 % 4 = 0 
5 % 4 = 1 
..... 
etc.. 

Für negative Zahl

...
1 % (-4) = 1 
(-2) % 4 = -2 
(-3) % (-4) = -3 

mit einem Rest-Operator, das Vorzeichen des Ergebnisses ist die gleiche als Zeichen der Dividende kann

Sie mehr bei What's the difference between “mod” and “remainder”?