# Unterschied zwischen "char" und "unsigned char"



## 3Cyb3r (5. April 2010)

Wo liegt der Unterschied zwischen char in unsigned char.
Meiner Meinung nach gibt es keinen, jedoch wenn ich soetwas sehe:

```
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


----------



## Cromon (5. April 2010)

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.


----------



## Enumerator (5. April 2010)

Hi!



Cromon hat gesagt.:


> 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:
	
	
	



```
#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).



3Cyb3r hat gesagt.:


> 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


----------

