Forum: PC-Programmierung Integer zu char


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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. (stefanus)


Bewertung
0 lesenswert
nicht 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.

: Bearbeitet durch User
von zitter_ned_aso (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Erstaunlich.

Bei mir kam zuerst 'F' raus.

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

von Flotzenplotz (Gast)


Bewertung
0 lesenswert
nicht 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. (stefanus)


Bewertung
0 lesenswert
nicht 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.

: Bearbeitet durch User
von Rolf M. (rmagnus)


Bewertung
0 lesenswert
nicht 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. (stefanus)


Bewertung
0 lesenswert
nicht 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 :-)

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.