Forum: PC-Programmierung Integer zu char


von Stefan F. (Gast)


Lesenswert?

Ich habe eine ASCII Code in einer Integer Variable, diese möchte ich in 
das entsprechende Zeichen umwandeln. Natürlich wiess ich, wie man das 
castet, aber ich habe eine interessante Alternative entdeckt:
1
int hexCode=65;
2
char c=char(hexCode);  // c ist 'e'

Das klappt auch, jedoch konnte ich nirgends die Doku dieser char() 
Funktion finden. Ist das überhaupt eine Funktion?

von g457 (Gast)


Lesenswert?

> Natürlich wiess ich, wie man das castet [..]

Das glaube ich Dir nicht.

> [..] char() [..] Ist das überhaupt eine Funktion?

Nein, natürlich nicht.

von Stefan F. (Gast)


Lesenswert?

g457 schrieb:
>> Natürlich wiess ich, wie man das castet [..]
> Das glaube ich Dir nicht.

In C:  char c=(char)hexCode;

In C++:  char c=static_cast<char>(hexCode);

>> Ist char() überhaupt eine Funktion?
> Nein, natürlich nicht.

Was dann?

Normalerweise kann die IDE zum zugehörigen Quelltext springen, aber hier 
geht das leider nicht.

von zitter_ned_aso (Gast)


Lesenswert?

Erstaunlich.

Bei mir kam zuerst 'F' raus.

Dann 'r', 'e', 'i'..... Von wegen Rust - C rules!

von Flotzenplotz (Gast)


Lesenswert?

"functional cast expression"

https://en.cppreference.com/w/cpp/language/explicit_cast

2) The functional cast expression consists of a simple type specifier or 
a typedef specifier (in other words, a single-word type name: unsigned 
int(expression) or int*(expression) are not valid), followed by a single 
expression in parentheses. This cast expression is exactly equivalent to 
the corresponding C-style cast expression.

von Stefan F. (Gast)


Lesenswert?

zitter_ned_aso schrieb:
> Bei mir kam zuerst 'F' raus.

Sorry, die 65 ist natürlich eine Dezimalzahl. Ich korrigiere die 
unabsichtliche Irreführung mal:
1
int asciiCode=65;
2
char c=char(asciiCode);  // c ist 'e'

Richtig interessant finde ich, dass hier keine Warnung "implicit 
conversion loses integer precision: 'int' to 'char'" erscheint.

@Flotzenplotz:
Dein Link hilft mir weiter, ohne deine Hilfe hätte ich das wohl den 
ganzen Abend lang vergeblich gesucht.

von Rolf M. (rmagnus)


Lesenswert?

Stefanus F. schrieb:
> Richtig interessant finde ich, dass hier keine Warnung "implicit
> conversion loses integer precision: 'int' to 'char'" erscheint.

Waurm sollte sie? Ist ja keine implizite Konvertierung.

Diese Art von Cast ergibt sich einfach daraus, dass man sich für Klassen 
Konstruktoren definieren kann, die man genau so zum Konvertieren 
benutzen kann. Und für die eingebauten Typen hat man die gleiche Form 
der Konvertierung zugelassen, auch wenn es dort eigentlich keinen 
Konstruktor gibt. Daher würde ich es umgangssprachlich eher als 
"constructor-style cast" bezeichnen.

von Stefan F. (Gast)


Lesenswert?

Rolf M. schrieb:
> Ist ja keine implizite Konvertierung.

Hmm, da hast du auch wieder Recht. Wenn man (also ich) auf den genauen 
Wortlaut achtet, könnte man selbst drauf kommen. Aber nicht so spät 
Abends :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.