Modulo Verständnis
-
Hallo. Warum spuckt mir:
#include <stdio.h> int main(void) { int wert; for( wert = 1; wert <= 10; wert = wert + 1 ) { printf( "Ich bin bei '%d'\n", wert ); if((wert % 2) == 0) continue; printf( " Dieser Wert ist durch zwei teilbar.\n" ); } return 0; }etwas anderes aus als:
#include <stdio.h> int main(void) { int wert; for( wert = 1; wert <= 10; wert = wert + 1 ) { printf( "Ich bin bei '%d'\n", wert ); if(wert % 2) continue; printf( " Dieser Wert ist durch zwei teilbar.\n" ); } return 0; }? Letzteres zeigt mir die richtigen Zahlen an, welche durch zwei restlos teilbar sind. Ersteres jedoch nicht. Warum ist das so?
Auch: Wenn ich das continue entferne aber ansonsten das == 0 anfüge (wohlgemerkt in einer vollständigen IF-Abfrage), dann stimmt die Ausgabe wieder. Ich bin verwirrt. Und übrigens ein Neuling.

-
if((wert % 2) == 0)Übersetzung: Wenn der Divisionsrest 0 ist...
if(wert % 2)Übersetzung: Wenn der Divisionsrest nicht 0 ist...
Was der Divisionsrest mit der Teilbarkeit einer Zahl zu tun hast, darfst du dir selber überlegen.
-
if(wert % 2)und
if(wert % 2 != 0)sind sinngemäß äquivalent, dann siehst du auch direkt, dass
if(wert % 2 == 0)das gegenteil von
if(wert % 2 != 0)ist
-
Warum zeigt dann
#include <stdio.h> int main(void) { int wert; for( wert = 1; wert <= 10; wert = wert + 1 ) { printf( "Ich bin bei '%d'\n", wert ); if( (wert % 2) == 0 ) { printf( " Dieser Wert ist durch zwei teilbar.\n" ); } } return 0; }die richtigen Lösungen an? Schließlich steht ja hier auch == 0. Ich kann da keinen Unterschied zum obigen erkennen. Tut mir leid, falls die Lösung so offensichtlich ist.

Wenn der Divisionsrest = 0 ist, ist die Zahl durch 2 teilbar. Also müsste doch dann das Codebeispiel 1 im ersten Beitrag die richtigen Ergebnisse ausspucken, odeR?
-
Was macht denn
continue;?
-
Die Schleife bis zum Ende durchführen, oder?
-
CrispyTurtleAlligator schrieb:
Die Schleife bis zum Ende durchführen, oder?
Nein,
continue;hat eine gänzlich andere Auswirkung.Was genau passiert steht in Deinem C Buch oder z.B. hier: http://en.cppreference.com/w/cpp/language/continue. (ist zwar für C++, aber solange Du nicht das Beispiel kompilieren willst ist das unerheblich).
-
CrispyTurtleAlligator schrieb:
Die Schleife bis zum Ende durchführen, oder?
Nein, den Rest überspringen.
-
CrispyTurtleAlligator schrieb:
Die Schleife bis zum Ende durchführen, oder?
Die Schleife wird ganz normal, ohne
continue"bis zum Ende durchgeführt".
continuehätte dann also gar keinen Effekt.
Das kanns also schonmal nicht sein.
-
Oh je.. danke euch!
