Konvertieren eines int in char, mit printf
Ich Frage mich nur, ob folgende ist der richtige Weg zu int konvertieren, um es anzuzeigen als einen char
#include <stdio.h>
int main()
{
int x = 500;
printf("%hhd\n", x);
}
Auch, von oben Frage ich mich, ob ich tun sollte, als die folgenden, um den Wert anzuzeigen, der Charakter.
#include <stdio.h>
int main()
{
char c = 'a';
printf("%hhd\n", c);
}
Oder gerade printf("%d\n", c);
Ordnung sein? Also, im Grunde ich versuche die Ausgabe des ersten byte der Ganzzahl durch printf ohne casting.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit
%hhd
im ersten Beispiel wird ein C99-konformprintf()
zu konvertieren, dieint
es wird an einenchar
vor dem drucken. Je nachdem, ob die Zeichen mit oder ohne Vorzeichen, sehen Sie möglicherweise 244 oder -12, wie der Wert gedruckt. Es ist fraglich, ob dies der "richtige" Weg, um es zu drucken; die meisten wahrscheinlich nicht. Der normale Weg, um das drucken eines Zeichens ist mit%c
. Eine Frage ist, was ist500
soll darstellen, wie ein Zeichen; sein Wert liegt außerhalb des Bereichs (auf fast allen Plattformen) für diechar
,signed char
oderunsigned char
Arten. Wenn es ein Unicode-Zeichen oder andere wide-character-Wert, dann müssen Sie wahrscheinlich verwenden Sie die wide-character-Formatierungen Variante —wprintf()
.Dein zweites Beispiel mit
%c
- format und eine einfachechar
Wert'a'
ist brav und konventionell. Das drucken wird mit dem Buchstaben 'a'. Wenn Sie%hhd
funktioniert es auch und wird in der Regel drucken 97 (man müsste auf eine ungewöhnliche computer, um einen anderen Wert).%c
zum drucken der Zeichen, aber der Wert des ersten byte der Ganzzahl.printf
zu behandeln die Konvertierung.%hhd
format gedruckt wird das LSB (unabhängig von der endianness).druckt
244
.500 = 00000001 11110100
244 = 11110100