Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » char werte in unsingned short int

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
30.04.2005, 14:46 Uhr
~gast
Gast


Hallo hab ein kleines Problem ! Wenn mir irgendwer helfen könnte wäre echt super!
Also ich habe eine char Variable(cVar) mit Wert drin z.B.
0x10
jetzt weise ich einer unsigned short int Varible (usiVar) den Wert von Char zu mit

usiVar=(unsigned short int) cVar;

nun hab ich in der Integervariable den Wert den ich brauche allerdings geht das alles nur so lange gut bis der Wert in der cVar nicht grösser wird als 0x79
An was liegt das ? Wie kann ich das beheben ?
Danke im Vorraus :->
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
30.04.2005, 15:52 Uhr
~gast
Gast


hab es jetzt so gelöst ...denke mal das du der Compilier irgendwas mit den überlauf der bits rumwurschtelt....keine ahnung ob das absicht ist ....

b=255;
usiVar=0;

usiVar=usiVar|cVar;
usiVar=usiVar&b;
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
30.04.2005, 16:01 Uhr
~gast
Gast


oder unsigned char draus machen ....
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
30.04.2005, 17:18 Uhr
doppler



Dieses Verhalten finde ich erstaunlich, denn soweit ich weiß, muss short int mindestens 16 bit groß sein, und da 0x79 ja 121 entspricht, müsste es auf jeden Fall ohne Probleme konvertiert werden. Auch finde ich komisch, dass die Grenze 121 und nicht 128 ist.

Das unerwartete Verhalten könnte aber auch daher kommen, dass cVar negativ ist, dir das aber nicht bewußt war. Das würde auch erklären, warum das Benutzen von unsigned char hilft. (Bei 16 Bit shorts wird -1 in 65535 umgewandelt.)

Übrigends: bei 8Bit char ist 0x80 gleich -128 und 0x7F gleich 127 . Wie groß auf deinem System die ganzahligen Typen sind, kannst du in der Datei limits.h nachlesen.

Dieser Post wurde am 30.04.2005 um 17:34 Uhr von doppler editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
30.04.2005, 19:15 Uhr
ao

(Operator)



Zitat von doppler:
Auch finde ich komisch, dass die Grenze 121 und nicht 128 ist.

Vermutlich hat er übersehen, dass nach 0x79 noch 0x7A bis 0x7F und dann erst 0x80 kommt.Es wird schon so sein, dass es erst bei 0x80 kracht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: