char a = +127 funktioniert gibt Fehler
-
Hallo Zusammen,
mein Listing sieht (ungefähr) so aus:
#include <stdio.h> #include <windows.h> int main() { char a; for (a=-128;a<=127;a++) { printf ("Guckst du hier: %c\n", a); } system ("pause"); return(0); }Nur dass mir die Konsolenanwendung beim letzten, also wenn char a gleich 127 ist, hängen bleibt und ich einen andauernden Piepston bekomme. Jetzt meine Frage:
Warum ist das so ? Ich meine ...ein char kann doch Werte von -128 bis +127 aufnehmen. Warum hängt dann meine Konsole bei +127 ? Wenn man die Schleifenbedingung in 'a<=126' ändert funktioniert es...aber warum hakt es genau an dem 127er-Zeichen ?? Ich hab keinen Plan warum, wäre nett wenn mir jemand weiterhelfen könnte. _Schönen Gruß
CMan
-
Das heißt ja nicht das auf der Konsole vernünftig anzeigbar ist.
-
Du hast ne Endlosschleife programmiert
-
127 + 1 = -128
-
wie ein vorgänger schrieb wird die bedingung immer true sein, weil sobald +128 drankäme der char implizit zu -128 wird!
du kannst das problem nun zb so lösen:
#include <stdio.h> int main() { char a; for (a=-128;a<=126;a++) { printf ("Guckst du hier: %c\n", a); } printf("Guckst du hier: %c\n", a); return 0; }
-
Oder so:
int main() { ofstream out( "bla.txt" ); signed char b = -128; for( int i = 0; i < 256; ++i, ++b ) out << (int)b << "=" << b << endl; }
-
Lol...danke. _
Ich bin noch nicht ganz in die Welt der Bytes und Bits durchgedrungen-
wusste nicht, dass sich des dann wiederholt und wieder -128 ergibt.
Danke jedenfalls, habt mir sehr geholfen. *g*Noch 'n Grüßle dalass
CMan
-
Benutz nächstes mal einen Debugger.