was bedeuted if(i%2 == 0) genau? ist das der rest der berechnet wird?
Das ist eigentlich das was du lernen solltest
% ist der
Modulo-Operator(zu der es eine eigene Mathematik gibt). Er gibt den Rest eine Ganzzahligen Division zurück:
Eine Zahl ist gerade, wenn sie durch zwei Teilbar ist, daher wenn der Modulo-Operator 0 zurück gibt, das ist das was ich überprüfe.
ps was ist das problem beim verbesserten programm?
Ein Wahrheitswert in C ist wahr, wenn entweder der gegebene Vergleich(>, <, ==, >=, <=, !=) wahr ist, oder eine Zahl größer 0 angegeben wird.
Daher
In deinem Code hast du die Bedingung
genommen, um eine Zahl als gerade zu klassifizieren.
Nun solltest du aber schon gelernt haben, dass dieser Ausdruck nur Wahr wird, wenn ein Wert größer 0 heraus kommt und dies ist der Fall, wenn die Zahl ungerade ist, da dann Modulo 1 zurück liefert.
Effektiv hast du den falschen Schluss gezogen, tauschst du die Texte aus, dann würde es stimmen.
Redundanz macht wiederholen unnötig.
quod erat expectandum