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.


Anmelden zum Antworten