C Ziffernsumme mit while Schleife?

4 Antworten

Naja, ein int halt auch auch einen definierten Zahlenbereich. Wenn Du den überschreitest, passieren komische Dinge (z.B. geht's eventuell im Negativen wieder los).

Schlauer wäre, die Zahl als String eingeben zu lassen und dann Stelle für Stelle zu summieren.

Der Wertebereich eines Itn umfasst 2^23 ~ 4Mrd verschiedene Werte. Dir wird auffallen, daß das eine 10 stellige Zahl ist.

Nehme mal eine 10-stellige Zahl <2 Mrd und es sollte noch korrekt sein.

Im Zweifelsfall einfach einen unsigned long nehmen oder gleich eine Zeichenkette nehmen (Wie bereits vorgeschlagen).

Wenn du meinst, dass bei einer sehr großen Zahl falsche Ergebnisse raus kommen, kann das daran liegen, dass du einen Integer Overflow hast. Du verwendest ja einen signed int mit vermutlich 32 Bit, also kannst du Zahlen zwischen -2^31 und 2^31 -1 speichern. ( zwischen -2147483648 und +2147483647 ).

https://en.wikipedia.org/wiki/Integer_overflow

Woher ich das weiß:Hobby

für große zahlen könntest du long long oder strings nehmen