char ?????????? Dringend!!!



  • Original erstellt von crown:
    **und der output is "C kleiner 0"

    meine frage: ist c wirklich kleiner als 0?? oder is c genau 0?**

    schau doch selber nach.

    ein unsigned kann NIE negativ sein, aber ein signed natürlich schon.

    ist dein char signed oder unsigned?
    wenn er unsigned ist, dann ist 127+1 == 128
    ist er signed, dann ist 127+1 == überlauf



  • Und ausserdem ist die Funktion scheisse. Wenn zufällig das char == 0 ausgeben würde gibt sie Mist aus! Richtig wäre:
    printf("C kleiner oder gleich 0");



  • ist auch ein test 😃



  • Original erstellt von crown:
    ist auch ein test 😃

    Dann lern und probier aus! Wir machen keine Prüfungen für dich! ps: ich meinte -128 net -127



  • Hi Crown, hi Lars (du hast ja einen Ton drauf... 😞 )

    Crown, falls das char signed ist, dann ist ja eben genau das 8te bit das Vorzeichenbit. Weißt man nun deinem signed char einen Wert größer 127 zu, dann wird das 8te Bit, welches ja in jedem Fall gesetzt ist, als das Minus interpretiert.

    Grüße, Chris



  • Original erstellt von xris:
    du hast ja einen Ton drauf... 😞

    Sry aber ich find es nicht ok das er hier (?) Prüfungsaufgaben postet die wir beantwortet und er dann noch das Wissen in diesem Themenbereich bescheinigt bekommt.



  • Original erstellt von xris:
    falls das char signed ist, dann ist ja eben genau das 8te bit das Vorzeichenbit.

    Nicht wirklich. Erstens: Ein 'signed char' darf schon größere Werte als 127 annehmen (falls CHAR_BIT > 8). Zweitens: Auf 'normalen' Systemen verwendet man keine simplen Vorzeichenbits, sondern verwendet das Zweierkomplement.



  • Original erstellt von Daniel E.:
    Nicht wirklich. Erstens: Ein 'signed char' darf schon größere Werte als 127 annehmen (falls CHAR_BIT > 8). Zweitens: Auf 'normalen' Systemen verwendet man keine simplen Vorzeichenbits, sondern verwendet das Zweierkomplement.

    Ähhh was?



  • Hi!

    Also im Standard Ansi C++ ist char mit einem Byte berechnet. Da gibt es nix zu rütteln. Was man mit der CHAR_BIT Konstante machen kann ist, dass man die Compiler Option /J angeben kann, so dass tatsächlich char als unsigned behandelt wird.
    Aber wie gesagt, Standard ist char mit einem Byte und eben nur Werte bis 255 falls unsigned.

    Grüße
    (www.christiankonrad.de)



  • > Also im Standard Ansi C++ ist char mit einem Byte berechnet.

    Jau. Aber sie sagen nicht, dass ein Byte 8 Bit haben muß. Dass du "C++" geschrieben hast werte ich mal als Tippfehler, aber da steht letztlich in der Beziehung auch nix widersprüchliches zu ANSI-C drin.

    > Was man mit der CHAR_BIT Konstante machen kann ist, dass man die Compiler
    > Option /J angeben kann, so dass tatsächlich char als unsigned behandelt wird.

    Wo im Standard steht das? Wenn ich die Compileroption bei meinem Compiler angebe, sagt er, dass er die Datei /J nicht finden konnte :p im übrigen hat CHAR_BIT mit signed oder unsigned genau gar nichts zu tun.

    3.4
    ...
    [#3] NOTE 2 A byte is composed of a contiguous sequence of
    bits, the number of which is implementation-defined. The
    least significant bit is called the low-order bit; the most
    significant bit is called the high-order bit.

    implementation-defined != 8 🙂


Anmelden zum Antworten