Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Einfache Sache mit negativen Zahlen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
15.10.2003, 12:59 Uhr
~Chris
Gast


Hallo
Wie man merkt bin ich neu in der C-Programmierung und hab ein ganz einfaches Problem das ich schon nicht lösen kann.
Ich habe ein Programm in denen ich Variablen als unsigned int verwende und prüfe die Eingabe mittels Rückgabewert !=1
Damit fange ich falsche Eingaben im Sinne von Buchstaben zB ab. Damit kann ich allerdings nicht verhindern das negative Zahlen eingegeben werden.
Wie kann ich das verhindern? Ein Einbau von rw!=1 || x<0 hat das Programm nicht beeindruckt bzw. kann ich trotzdem -12 oder ähnliches eingeben, ohne das die darauf folgende Schleife durchlaufen wird.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.10.2003, 13:08 Uhr
typecast
aka loddab
(Operator)


Das liegt daran, dass du unisgned int verwendest. Die Variablen von diesem Typ sind alle positiv. Deshalb kann x < 0 niemals true werden. Du schreibst zwar eine -12 rein, aber die Zahl die dann in der Variable steht wird als Positive Zahl interpretiert.
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
15.10.2003, 13:16 Uhr
~Chris
Gast


Ja, eine Frage hab ich noch. Kann ich die Eingabe negativer Zahlen nun irgendwie verhingern oder muß ich den Variablentyp ändern?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
15.10.2003, 13:49 Uhr
typecast
aka loddab
(Operator)


Ich gehe mal davon aus, dass du die Zahl mit

C++:
scanf("'%d", rw);


einliest. Dann kannst du mal versuchen das %d durch %u zu ersetzen. Wenn das nicht klappt, dann musst du wohl int aus unsigned int machen
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
15.10.2003, 14:08 Uhr
~Chris
Gast



Zitat:
Loddab postete
Ich gehe mal davon aus, dass du die Zahl mit

C++:
scanf("'%d", rw);


einliest. Dann kannst du mal versuchen das %d durch %u zu ersetzen. Wenn das nicht klappt, dann musst du wohl int aus unsigned int machen



Alles klar, werds als int verwenden müssen, danke.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: