char = int - Wo ist das Problem?
-
ich hab mal eine (glaube ich) recht simple Frage:
wenn ich einen char hab und dem mit z.B.c = 110;
einen numerischen Wert zuweise, dann bekomme ich ein Zeichen. Bei ASCII ist das das "n". Wenn ich aber dem char einen integer zuweise bekomme ich irgendeinen müll:
int i; char c; i = 110; c = i;
da kommt ein i mit Dach bei raus. Kann mir mal jemand meinen Denkfehler erklären? Ich komm nich drauf...
-
waere nett, wenn du mehr infos bieten wuerdest. system, compiler, prozessortyp.
-
Also beim VC++ (VS.NET 2003) funktioniert dein Beispiel einwandfrei...
Muss also irgendwie an deinem speziellen Compiler, bzw. System liegen
-
benutze den gcc unter Windows ME
habs nochmal unter Linux probiert, da geht's ^^ is wohl 'n DOS-Problem
-
also bei mir (MSVC .net 2003 auf Windows 2003) läuft's so wie's soll...
Greetz, Swordfish
-
Prozessortyp und Compiler sollte hier eigentlich egal sein, weil 110 definitiv im Wertebereich von char liegt. Es gibt keine Probleme mit Vorzeichen oder abgeschnittenen Bits. Es ist sogar im ASCII-Bereich (32 bis 127) ... wenn man nicht gerade ne ganz exotische Kiste (IBM-Großrechner?) benutzt, sollte da immer 'n' rauskommen.
Man könnte jetzt unterstellen, dass du das eigentlich mit 140 statt 110 getestet hast ...
-
.
-
für gcc unter ME
int i; char c; i = 110; c = (char)i;
-
Wunderbar, wär ich nie drauf gekommen!
Kannst du mir evtl. erklären warum das so is? Und wieso funzt mein Beispiel bei VC anscheinend, beim gcc aber nich? Die Syntax is doch Standard... dachte ich zumindest...@bashar: ich hab's mit 110 getestet... solche sachen teste ich immer mit 110 weil das den anfangsbuchstaben meines namens ergibt, den ich nicht so leicht durcheinander krieg... ausserdem sieht's aus wie 'ne binär-zahl ^^