Berechnung liefert falsches Ergebnis

trench140

Mitglied
Hallo alle miteinander,

ich führe mit C# eine kleine Berechnung durch, die jedoch das falsche Ergebnis liefert, woran kann das liegen?

Der Code-Teil sieht wie folgt aus:

Code:
num2 = 33;
text = "3";

while (num < text.Length)
{
    num2 = (num2 - 48) + text[num];
    Console.WriteLine(num2);
    num++;
}

Als Ausgabe erhalte ich "36", was jedoch falsch ist, denn 33 - 48 + 3 = -12.

Wenn ich das Ganze nun so umschreibe:
Code:
while (num < text.Length)
{
    num2 = num2 - 48;
    num2 = num2 + text[num];
    Console.WriteLine(num2);
    num++;
}

erhalte ich als Ausgabe wieder 36.

Wenn ich nun aber
while (num < text.Length)
{
num2 = num2 - 48;
Console.WriteLine(num2);
num2 = num2 + text[num];
Console.WriteLine(num2);
num++;
}
mache, dann sehe ich bei der ersten Aufgabe -15, was ja für den ersten Zwischenschritt korrekt wäre, beim zweiten Mal gibt er aber wieder 36 aus.

Jemand eine Idee, woran das liegt?

Es handelt sich hierbei nicht um meinen eigenen Code, sondern um einen im Rahmen des Studiums reverse engineerten, daher nehmt den Code so hin, wie er ist. Was der Code machen soll, ist mir soweit klar, ich verstehe nur nicht, warum er sich an dieser Stelle so seltsam verhält.

Gruß,
Trench
 
Hi,

das liegt daran, dass du das Zeichen (char) '3' als Berechnungsgrundlage benutzt und nicht den Zahlenwert 3. Die '3' steht in der ASCII-Tabelle mit dem Wert 51 (Ziffern fangen mit '0' bei 48 an).

Du müsstest von dem Zeichen also nochmal 48 subtrahieren, um den Zahlenwert zu bekommen oder eben in einen Zahlentyp casten.

Grüße, D.
 
Ahh, super, man danke :D Da hätte ich irgendwie auch selber drauf kommen können... hab den Wald vor lauter Bäumen nicht mehr gesehen.

Vielen lieben Dank,

gruß,
Trench
 

Neue Beiträge

Zurück