2017-11-22 16 views
-6

Im folgenden Code, was ist das! (X% Y) zurück?Was ist der Modulo-Return?

int count = 2; 
bool notprime = false; 
while (count < num) 
{ 
    if (!(num % count)) 
     notprime = true; 
    count++; 
} 

Mit anderen Worten, bedeutet es, dass, wenn (num% count) 0 ist, dann wird die Klammer wahr zurückgegeben? Oder wird es falsch zurückkommen? Und was, wenn es (!) Negiert - wie im Code? Ich habe Probleme, den Fluss zu verstehen ...

+1

Wenn 'num% count' ist 0,'! (Num% count) 'ist 1, wenn' num% count' ist anders als 0, '! (num% count)' ist 0. Andere Beispiele: '! 0' ist 1,'! 123' ist 0, '! 42' ist 0,'! 32145' ist 0. In Mit anderen Worten '! x' ist 1 für x = 0 und 0 für alle anderen Werte von x. –

+0

Also, aus dem Codebeispiel, wenn das Ergebnis von! (Anzahl% count) ist 1 (true), dann ist nicht prime True zugewiesen? – Sky7ure

+1

Nun ... natürlich ja. –

Antwort

1

num % count gibt das Modulo von num mit Anzahl. Wenn die Antwort 0 ist, wird es als false interpretiert und wenn es 1 oder größer als 1 oder weniger als 0 ist, wird es als true Wert interpretiert.

Also, !(num % count) negiert es. Wenn Sie also das Ergebnis von mod als 1 oder eine Zahl größer als 1 erhalten, wird es negiert und das Ergebnis von !(num % count) wird false sein. Ähnlich, wenn die Antwort des Mods 0 war, dann wird es negiert und das Ergebnis von !(num % count) wird true

+5

"_wenn es' 1' oder größer als '1' ist, wird es als' wahr'_ interpretiert. Nicht ganz korrekt. Jeder Wert ungleich "0" wird als "wahr" interpretiert. Dies beinhaltet sowohl positive ** als auch negative ** Werte. Aus der Art, wie es von dir geschrieben ist - es scheint, dass nur positive Werte als "wahr" interpretiert werden. –

+1

Ich stimme zu. Da er Mod verwendet, ist die Chance für den negativen Wert 0. –

+1

"_ Da er Mod verwendet, ist die Chance für den negativen Wert 0._" Falsch: Modulo-Operator kann negative Ergebnisse in C++ produzieren. –