# char oder int?



## JeanClaudeVanDamme (20. September 2003)

hi
bin anfänger ,kann mir jemand den unterschied zwischen char und int erklären?
was wende ich wann an?


----------



## chibisuke (20. September 2003)

nun also es gibt in C prinziell erstmal nur zahlen als datentypen...
und die können verschieden groß sein..

alle angaben beziehen sich auf windows systeme ab 95.

char = 8 bit, zahlen von -127 - 128
das char wird schon seit jeher auch als datentyp für zeichen benutzt, denn zeichen sind wenn sie im ansii oder ascii format sind immer 8 bzw. 7 bit lang..

short = 16 bit, zahlen von -32767 - 32768
wird bei moderenen system als wchar datentyp eingesetzt, denn hier können unicode zeichen (japanische, chinesischen... zeichen) ebenfals benutzt werden

int = 32bit, zahlen von -21483647 - 21483648
wir gerne algemein für zahlen benutzt...

long = 32bit, zahlen von -21483647 - 21483648
unsigned long wird gerne benutzt wenn man noch nicht weiß was man im endeffekt übergeben will.. denn man kann einen pointer (ebenfalls 32bit unsigned) problemlos in ein unsigned long convertieren und wieder zurück...

long long oder bei vc++ auch als __int64 bezeichnet = 64bit zahlen von -9223372036854775807 - 9223372036854775808 
wird nur bei extrem großen zahlen, bei soezialanbwendungen wie z.B. 3DNow! oder bei VLM speicherblöcken für addressierung eingesetzt...

jeden dieser datentypen gibt es signed und unsigned..
das ist eine voläständige liste aller existenter datentypen bei win32 systemen... egal ob dir jemand was von einem BOOL oder sonst was erzählt.. es handelt sich immer um einen von den 5.. BOOL ist beispielsweise als int..
und BYTE is als char definiert..
BYTE = unsigned char
size_t = unsigned int
WORD = unsigned short
DWORD = unsigned int
um noch einige zu nennen.. alle anderen datentypen sind auf diesem wege definiert...

einzige ausnahme ist der nur in C++ existente datentyp bool dieser ist in keiner header datei irgendwie definiert sondern wird vom compiler speziell verareitet, um prinzip kann er nur die werte true oder false annehmen, also 1 oder 0, alles andere akzeptiert er nicht.. auch wenn viele compiler bool als char oder int implementieren..


----------



## JeanClaudeVanDamme (20. September 2003)

danke war sehr ausführlich!
hab ich das jetzt richtig vertsanden-int ist nur für zahlen und char sowohl für zahlen als auch für zeichen?
was bedeutet signed und unsigned?
und was versteht man unter einem pointer?


----------



## Flamesword (20. September 2003)

Ja hast du.
Signed heisst mit Vorzeichen.
Unsigned das Gegenteil.
Ein Pointer ist ein Zeiger auf ein Objekt.


----------

