2016-07-14 3 views
0
#include <stdio.h> 

int main() { 

    int i, j; 

    for (i = 2; i < 20; i++) { 
     for (j = 2; j <= (i/j); j++) { 
      if (!(i%j)) break; 
     } 
     if (j > (i/j)) printf("%d\n", i); 
    } 

    return 0; 
} 

Ich bin ein Anfänger bei C und versuche zu verstehen, wie die for-Schleife funktioniert. Meine Frage ist, auf der 4. Iteration, die Bedingung in der verschachtelten Schleife TRUEFor Schleife in C und wie es funktioniert?

(j < (i/j)) // 2 <= 4/2 

und die erste if Aussage auch TRUE wegen NOT Operator zurückkehren zurück

(!(i%j)); // 4/2 = !(0) 

so dass nun der Wert von j = 3 wegen der Inkrementierung, aber warum die zweite if Anweisung die Ausgabe nicht gedruckt, wenn es TRUE ist?

(j > (i/j)); // 3 > 4/3 
+0

'Meine Frage ist in der 4. Schleife 'wo ist das? –

+0

stell dir vor, dass die Schleife jetzt in der 4. Schleife ist. –

+2

meinst du Iteration? –

Antwort

4

Sie aus der Schleife vor j brechen wird erhöht, so j 2 ist noch nicht 3

3

Eine break-Anweisung beendet vorzeitig seine nächste einschließende Schleife. Alles danach (und das schließt die dritte Anweisung der Schleife for ein) wird nicht auftreten.

Also j ist immer noch 2, wenn die Bedingung für den Druck überprüft wird, wie Mark beantwortet.

+0

und etwa bei der 9. Iteration, wie die zweite if-Anweisung TRUE zurückgibt? danke. –

+0

@DisplayName Sie meinen, wenn 'i'' 9' oder '10' ist? (Da Sie von "2" starten, ist es nicht klar, was die neunte Iteration ist) – StoryTeller

+0

@DisplayName, den Code ausgeführt wird nicht gedruckt "9" oder "10" http://ideone.com/OmXHvp Es druckt nur Primzahlen . – StoryTeller