Werte ausgeben - char/double



  • HalliHallo :),
    ich bin gerade ein bisschen Stoff für meine Uni aufzuarbeiten.
    Ich bin noch absolutes Frischfleisch was C betrifft.

    Die Aufgabe die mir gestellt wurde, lautet wie folgt:

    Gegeben seien die Variablen c vom Typ char, und d vom Typ double.

    Welcher Wert wird den Variablen durch die folgenden Anweisungen zugewiesen?

    c = 129;
    c = 127;
    c = -128;
    c = 1+3 * 5;

    d = 1.0/2;
    d = 1/2;
    d = 129/258 + 0.5;
    d = 129./258 + 0.5

    Überlegen sie zunächst und überprüfen sie dann ihre Ergebnisse, indem sie die Anweisungen in ein Programm übernehmen und sich die zugewiesenen Werte auf der Console ausgeben lassen.

    Ich scheitere momentan schon bei dem Char (Minimalbereich ist ja von -128 bis 127)

    c = 129; (Müsste +1 rauskommen?)
    c = 127; (Müsste -1 rauskommen?)
    c = -128; (Müsste 0 rauskommen?)
    c = 1+3 * 5; ( Müsste (+16) -112 rauskommen? Punkt vor Strich)

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void) {
    
    	char c;
    	c = 'ü';
    	printf("output: %i\n", c);
    	return 0;
    }
    

    ü ist bei den ASCII Extended Characters 129.
    Wenn ich ü eingebe, kommt jedoch -68 als Output.

    Sehe gerade den Wald vor Bäumen nicht.
    Kann mir jemand von euch helfen?

    Liebe Grüße



  • Wie du bereits schon richtig gesagt hast, der Wertebereich von "signed char" ist von -128 - 127, "char" meint in der Regel "signed char".

    • c = 129;

    Das gibt einen Überlauf. Stells dir einfach so vor:

    Bei größerem Wertebereich:

    123, 124, 125, 126, 127,  128,  129,  130
    

    Bei char:

    123, 124, 125, 126, 127, -128, -127, -126
    

    Ergo ist c danach -127.

    • c = 127;

    127 ist noch im Wertebereich, kein Überlauf, also ist c 127

    • c = -128;

    -128 ist noch im Wertebereich, kein Überlauf, also ist c -128

    • c = 1+3 * 5;

    Hier gilt wie du sagtest Punkt vor Strich. 1+3*5 = 16. Also ist c danach 16, weil 16 im Wertebereich liegt.

    • ü ist bei den ASCII Extended Characters 129.

    Wenn ich ü eingebe, kommt jedoch -68 als Output.

    Bei mir ist ü auf 252, also wäre c dannn -4.
    Allerdings: Das ist kein Standard ASCII mehr, das hängt von der Codepage ab. Insofern wäre ich da mir Vorhersagen was den Wert betrifft vorsichtig. 😉



  • MaCXyLo schrieb:

    HalliHallo :),

    printf("output: [b]%i[/b]\n", c);
    

    %c bei char, aber bin auch selber Noob 🙂



  • specifier schrieb:

    MaCXyLo schrieb:

    HalliHallo :),

    printf("output: [b]%i[/b]\n", c);
    

    %c bei char, aber bin auch selber Noob 🙂

    war Quatsch 😮


Log in to reply