Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Das ist eigentlich gar kein Programmierstil.
Erstmal erstellst du ein char-Array/String und belegst es mit "6" vor - meckert da nicht schon der Compiler...?
Dann definierst du y als Integer. Danach weist du y den Wert text[0] (diese Variable wurde übrigens weder deklariert noch initialisiert) minus den Char '0' zu. Spätestens hier gibt sich der Compiler die Kugel und deinstalliert sich selbst.
Was du brauchst, ist entweder eine explizite Typumwandlung mit vorgestelltem (char) - ein so genannter Cast - oder eine Funktion wie itoa (enthalten in stdlib.h).
PHP:
char umgewandelt;
char als_string[2];
int y;
y = 5;
umgewandelt = (char)y;
itoa(y, als_string, 10);
Naja... was soll dieses Code-Fragment überhaupt machen? Sieht in diesem Kontext erstmal ziemlich eigenartig aus. Davon abgesehen:
Der Code ist absolut standardkonform und korrekt.
Die Subtraktion zweier char's ist übrigens schon von vornherein vom typ int, selbst wenn auf der linken Seite kein int stände. (Durch die Subtraktion werden die usual arithmetic conversions angewendet, wodurch wiederum auf die beiden char's die integer promotion angewendet wird - heißt, alle Typen mit einem kleineren Rang als int werden implizit in ints gewandelt, sofern in int darstellbar, sonst unsigned int).
Aaaaaachh.... char* nach int ist gemeint. Okay, jetzt macht's klick.
Okay, das ist dann äußerst gruseliger Code (wäre mal interessant, ob bei '6' - '0' überhaupt 6 rauskommen muss... mal den Standard wühlen, wenn ich Langeweile habe).
Naja, lieber direkt strtol(). atoi ist schlampig was die Fehlererkennung angeht. Oder sscanf (ruft intern in aller Regel auch nur strtol auf, übernimmt aber die Konvertierungsarbeit).
Dann definierst du y als Integer. Danach weist du y den Wert text[0] (diese Variable wurde übrigens weder deklariert noch initialisiert) minus den Char '0' zu. Spätestens hier gibt sich der Compiler die Kugel und deinstalliert sich selbst.
Text ist ein Typo, ist wohl offensichtlich... Vom Typo abgesehen - warum sollte der Compiler das tun?
fRaNkLiN schrieb:
Was du brauchst, ist entweder eine explizite Typumwandlung mit vorgestelltem (char) - ein so genannter Cast - oder eine Funktion wie itoa (enthalten in stdlib.h).
PHP:
char umgewandelt;
char als_string[2];
int y;
y = 5;
umgewandelt = (char)y;
itoa(y, als_string, 10);
itoa ist nicht in stdlib.h enthalten (vielleicht in der Version deines Library-Herstellers - in ISO9899 wird es nicht erwähnt). Nebenbei legt itoa irgendwie nahe, dass der frisch nach char konvertierte int wieder nach int konvertiert wird beim Aufruf.