Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 |
int init; do { scanf("%u", &init); if(init < 0) { printf("Falsch\n"); } }while(init < 0); |
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Hilfe erbeten und Lösungen vorkauen sind zwei verschiedene Dinge, aber manche Mitglieder denken scheinbar, dass sie auf letzteres eine Art Anrecht hätten statt nur auf ersteres. Und sowas kann keiner leiden, zu Recht.
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
"Patzige" Antworten waren nicht meine Absicht und wenn ich meine Posts durchlese kann ich auch nichts "patziges" daran erkennen.
Ich bin nicht verantwortlich dafür, wie du gewisse Sätze verstehst, dafür bist du allein verantwortlich.
Und des weiteren ist es manchmal schwierig zu 100% freundlich zu bleiben, wenn man eine ganz simple Frage stellt und von
Leuten, die sagen, dass sie angeblich wissen wo von sie sprechen, nicht verstehen worum es geht bzw. die Posts
erst garnicht richtig lesen.
Die Lösung wurde dir schon verraten.
Verwende kein unsigned für deine Zahlenvariable, unsigned sorgt dafür das dein Integer niemals negativ ist und sein kann, ergo wenn du eine negative Zahl eingibst kommt immer eine positive dabei heraus. Und sowas auf negativ zu prüfen ist etwas unmöglich, ergo a < 0 wird dir nie true liefern.
%u als Formatsybol bei scanf nimmt auch nur unsigned Werte an, wodurch du auch keine negative Zahl wirklich eingeben kannst. Ich weiß grade nicht wie sich scanf bei falschen Eingaben verhält (negative Zahlen bzw keine Zahl) vermute aber mal das es 0 zurückliefert für 0 erkannte Eingaben, diesen Wert müsstest du benutzen um auf Fehler zu checken (den Rückgabewert vom scanf). Dies wurde aber bereits mehrfach im Thread geantwortet
Wenn scanf die Eingabe nicht annimmt wird vermutlich der vorherige Wert deiner Variable nicht angefasst, da du diese Zahl nie initialisiert hast wird im besten fall 0 (Debug Builds) und in allen anderen Fällen irgendein Müll in der Variable stehen (also irgendeine Zahl).
Werbeanzeige