Problem beim umwandeln von int nach char

22/04/2014 - 10:40 von bernhartdiener | Report spam
Hallo zusammen,
Man betrachte den folgenden Programmausschnitt:
...
unsigned char zeichen='A';
unsigned char neues_zeichen;
neues_zeichen = zeichen+1;
...

wenn man in einem Befehl die zwei (gemischten) Datentypen int und char
hat (1 ist int und zeichen bzw. neues_zeichen ist char), wird doch
zuerst char in int umgewandelt.
Konket wird zeichen auf 4 Byte erweitert und dann 1 dazuaddiert.
Aber dann wird doch dieses 4 Byte Ergebnis in einem Byte (naemlich
char neues_zeichen) abgespeichert.
Es gibt also einen moeglichen Datenverlust (von 4 Byte auf 1 Byte).
Meine Frage:
_Muss_ der Compiler keine Warnung geben?
Warum?

mfg
BH
 

Lesen sie die antworten

#1 Thomas Koller
22/04/2014 - 14:01 | Warnen spam
Bernhart_Diener wrote:
Hallo zusammen,
Man betrachte den folgenden Programmausschnitt:
...
unsigned char zeichen='A';
unsigned char neues_zeichen;
neues_zeichen = zeichen+1;
...

wenn man in einem Befehl die zwei (gemischten) Datentypen int und char
hat (1 ist int und zeichen bzw. neues_zeichen ist char), wird doch
zuerst char in int umgewandelt.
Konket wird zeichen auf 4 Byte erweitert und dann 1 dazuaddiert.



Mit "konket" meinst du, "auf deinem Beispielsystem"?

Aber dann wird doch dieses 4 Byte Ergebnis in einem Byte (naemlich
char neues_zeichen) abgespeichert.
Es gibt also einen moeglichen Datenverlust (von 4 Byte auf 1 Byte).



Das ganze ist sowieso Compiler/Sysatemabhàngig. 'A' + 1 kann irgendein
Zeichen ergeben und muss nicht 'B' sein. (Nicht das du das behauptet
hàttest, die Frage ist nur, wozu dient dieses hochzàhlen?)

Meine Frage:
_Muss_ der Compiler keine Warnung geben?



Nein, warum sollte er das müssen?

Warum?



Eben.

Tom

Ähnliche fragen