Hi
Ist aber nicht die feine art das Problem so zu lösen.
Weil du letztlich das charakter(in deinem Fall den 0. ) aus dem char-Feld nimmst aber diesen nicht in eine integer Zahl konvertierst. Es funktioniert vielleicht aber es könnt auch mal nicht mehr funktionieren (anderes System, speicher, usw.)
char text[3]=„123“;
int x=(int) text[0]-‚0‘;
ausserdem verstehe ich nicht ganz warum du es nicht mit umwandeln wolltest, wegen ASCII ZEichen? diese behandelst du ja nach deinem Weg auch, indem du ‚0‘ abziehst. in der ASCII Tabelle hat dez 1 einen wert von 48 und dez. 0 einen von 47, wenn du jetzt 48-47 rechnest, kommt genau 1 raus, und das wäre dein gewünschtes Ergebnis. also behindert dich die typenumwandlung nicht, und machts auch nicht komplizierter, ist nur ein sicher Weg das nichts schiefgehen kann.
nicht das du jetzt meinst das ich kleinlich oder so bin, aber ich bin selbst schon stundenlang gesessen und hab solche Fehler gesucht, weil das funktioniert dann auch einmal nicht mehr, und nichtmal das muss sein. (ist ähnlich wie bei strcat ohne reservierten Speicher, das kann auch ganz schön ins auge gehen).
mfg martin
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]