tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
1284
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    3Cyb3r 3Cyb3r ist offline Mitglied Brokat
    Registriert seit
    May 2008
    Ort
    Baunatal (Hessen)
    Beiträge
    413
    Wo liegt der Unterschied zwischen char in unsigned char.
    Meiner Meinung nach gibt es keinen, jedoch wenn ich soetwas sehe:
    Code cpp:
    1
    2
    
    typedef Tuple3<char>          Tuple3b;
    typedef Tuple3<unsigned char> Tuple3ub;

    Von jemanden der es drauf hat denke ich mir immer, der wird sich dabei schon etwas gedachth haben.

    MFG
     
    Bei der Geburt ist ein Mensch so unfertig, wie ein an einem schönen blauen Montag in Taiwan hergestellter Computer vor der Programmierung.
    - Wolfgang Körner

  2. #2
    Cromon Cromon ist offline Mitglied Brillant
    Registriert seit
    Apr 2008
    Beiträge
    819
    char ist mit einem Vorzeichen behaftet, unsigned char nicht.

    char ist also mindestens im Bereich -127 <-> +127, während unsigned char mindestens im Bereich 0 <-> 255 ist.
     

  3. #3
    Avatar von Enumerator
    Enumerator Enumerator ist offline Mitglied Kamel
    Registriert seit
    Jan 2007
    Ort
    Schreibtisch
    Beiträge
    525
    Blog-Einträge
    2
    Hi!

    Zitat Zitat von Cromon Beitrag anzeigen
    char ist mit einem Vorzeichen behaftet, unsigned char nicht.

    char ist also mindestens im Bereich -127 <-> +127, während unsigned char mindestens im Bereich 0 <-> 255 ist.
    Das ist so nicht ganz richtig, ob char's vorzeichenbehaftet sind hängt von der Implementation und damit vom System ab.
    Tatsächlich ist es so, dass kein Standard festlegt ob char's signed oder unsigned sind - anders als bei den anderen ganzzahligen Typen (int, long, etc.), wo das Schlüsselwort signed optional ist.
    Um herauszufinden ob char vorzeichenbehaftet ist oder nicht, kann man z.B. <limits.h> einbinden und wie folgt vorgehen:
    Code C:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    #include <limits.h>
     
    /** GNU C definiert __CHAR_UNSIGNED__ wenn's zutrifft, wir machen daraus noch mehr */
    #ifndef __CHAR_UNSIGNED__
    # if 0 == CHAR_MIN
    #  define __CHAR_UNSIGNED__
    # else
    #  define __CHAR_SIGNED__
    # endif
    #endif

    In der Praxis ist es auch oft so dass einerseits char's wirklich nur für Zeichen verwendet werden und ansonsten int8_t bzw. uint8_t aus <stdint.h>, allerdings heißt letzerer unter Windows u_int8_t (glaub ich).

    Zitat Zitat von 3Cyb3r Beitrag anzeigen
    Von jemanden der es drauf hat denke ich mir immer, der wird sich dabei schon etwas gedachth haben.
    Kein schlechter Ansatz, aber verlass' Dich nicht darauf. Ich hab z.B. vor langer Zeit aufgehört mich über die von vermeintlichen Gurus getippten sizeof(char) - Grausamkeiten aufzuregen...

    Gruß
    Enum
     
    Zitat Zitat von Aba Assa
    "Zitate sind so etwas wie Outsourcing des Geistes."
    just-lyrics.org :: my-lyrics.org

Ähnliche Themen

  1. Unterschied zwischen "Global" und "Public"
    Von Nickie97 im Forum Visual Basic 6.0
    Antworten: 4
    Letzter Beitrag: 28.01.10, 17:05
  2. Antworten: 6
    Letzter Beitrag: 27.01.10, 16:07
  3. Antworten: 5
    Letzter Beitrag: 04.03.06, 19:07
  4. Antworten: 2
    Letzter Beitrag: 17.07.05, 19:24
  5. Antworten: 1
    Letzter Beitrag: 08.02.05, 08:14