Hallo,
hier wird vor dem Vergleich implizit der Wert von i in den Typ unsigned int umgewandelt. Dabei ergibt sich ein Wert von 4.294.967.294, was eindeutig nicht kleiner oder gleich 2 ist. Damit der Vergleich funktioniert, muss man limit explizit in den Typ int casten. Das geht allerdings auch nur solange gut, bis limit mal den Wertebereich von int verlässt – dann klappt es wieder nicht.
Gibt es eigentlich einen zwingenden Grund, warum du unsigned int für die Variable limit verwendest? Deklarier sie doch einfach als int, dann musst du dir deswegen keine Sorgen mehr machen.
Grüße,
Matthias