signed char VS. unsigned char ?
-
Decimad schrieb:
Eine beliebige feste Anzahl von Bytes reicht niemals um jedes Unicode-Zeichen darzustellen.
63452945234834512893253 reichen auf jeden fall
-
.... mehr als 512 kB....
-
Decimad schrieb:
Eine beliebige feste Anzahl von Bytes reicht niemals um jedes Unicode-Zeichen darzustellen.
Warum? Weil theoretisch irgendwann mal mehr als 2^32 Zeichen definiert sein könnten?
-
Weil man mehrere Codepunkte zu einem Zeichen zusammensetzen kann (oder muss, je nachdem).
-
Decimad schrieb:
Weil man mehrere Codepunkte zu einem Zeichen zusammensetzen kann (oder muss, je nachdem).
Verstehe. Warum man für ein Character 2 Bytes nutzen sollte, erklärt es aber trotzdem nicht.
-
Ich muss die Stelle übersehen haben, an der du diese Frage aufgeworfen hast.
-
Eric Cartman schrieb:
Hallo!
Ich grueble schon die ganze Zeit darueber (hab die Suchfunktion + Google richtig heisslaufen lassen) nach, was der Unterschied der beiden ist?Je nach Pattform wird für char entweder der signed char oder unsigned char Typ verwendet. Da die ISO Norm garantiert, daß man alle problemlos zuweisen kann, und sich das Zeichen nicht ändert (nur dessen Zeichencode), ist es schlußendlich egal, welches Typ Du für Deine eigenen Programme verwendest.
-
Decimad schrieb:
Ich muss die Stelle übersehen haben, an der du diese Frage aufgeworfen hast.
Es ging um Ceos' Aussage über die 2 Byte großen "echten" unicode characters von Java und C#. Klingt für mich so, als hielte er sie für einen Vorteil.
-
wenns nach vorteil klingt tuts mir leid cih finds eher verwirrend für umsteiger, aber ich finde die byte deklaration ist ein eindeutiger vorteil!
wieso verdammt nochmal es kein word in c# gibt versteh ich allerdings nicht ...
die klassischen byte word doubleword und quadword wären doch ideal um als unsigned werte herzuhalten, weil man sie im speicher auch nciht ander zu interpretieren hatEDIT: die integer sind ja auch endlose gummibänder, ich sag nur In16 - Int64 in c# ... herr sprich ein "word" aufdass die "double" zum "quad" werden ... SCNR iss schon spät
-
~john schrieb:
Eric Cartman schrieb:
Hallo!
Ich grueble schon die ganze Zeit darueber (hab die Suchfunktion + Google richtig heisslaufen lassen) nach, was der Unterschied der beiden ist?Je nach Pattform wird für char entweder der signed char oder unsigned char Typ verwendet. Da die ISO Norm garantiert, daß man alle problemlos zuweisen kann, und sich das Zeichen nicht ändert (nur dessen Zeichencode), ist es schlußendlich egal, welches Typ Du für Deine eigenen Programme verwendest.
"char" ist weder "signed char" noch "unsigned char", das sind drei unterschiedliche Typen. Allerdings wird sich char wohl immer entweder genau wie signed char oder genau wie unsigned char verhalten -- falls du das gemeint haben solltest.
Ich denke bei char gibt es die drei getrennten Typen, damit man z.B. "char-zeiger/arrays" einfach immer als Text interpretieren kann. Denn: wer rechnen will, der kann bzw. soll einfach "signed char" oder "unsigned char" nehmen.
Beispiel:
#include <iostream> template <class T> void foo(T const& t) { std::cout << typeid(T).name() << " " << t << std::endl; } int main() { char c = 'X'; signed char sc = c; unsigned char uc = c; foo(c); foo(sc); foo(uc); int i = 123; signed int si = i; unsigned int ui = i; foo(i); foo(si); foo(ui); } /* output: char X signed char X unsigned char X int 123 int 123 unsigned int 123 */
Sogesehen verhält sich char genauso wie wchar_t: auch wenn wchar_t sich z.B. genau gleich wie ein "unsigned short" verhält, darf wchar_t niemals der selbe Typ wie "unsigned short" sein.