2016-12-04 1 views
0

Nehmen wir an, ich habe die Ganzzahl 89, wie kann ich den ASCII-Wert von 89, der Y ist, ausdrucken, anstatt nur die Zahl 89 auszudrucken?Wie wird ASCII statt Integer in C gedruckt?

+8

'printf ("% c ", Wert)' –

+1

Darf ich vorschlagen, lesen Sie die comp.lang.c FAQ unter http://c-faq.com/ Es hat eine Vielzahl von Antworten für solche grundlegenden Fragen, und die schwierigeren. – Jens

+0

@Arctic_Skill: Sie können eine der Antworten akzeptieren, indem Sie auf das graue Häkchen unterhalb der Punktzahl klicken. – chqrlie

Antwort

5

Verwenden Sie den c Konvertierungsspezifizierer:

printf("%c\n", (char) 89); 

oder wie von chqrlie ‚s comment, einfach nur darauf hingewiesen:

printf("%c\n", 89); 

oder mit Kontext:

char c = 89; /* or int c = 89; */ 

printf("%hhd is '%c'.\n", c, c); 

Referencing the C11 Standard (draft):

7.21.6.1 Die Funktion fprintf

[...]

8 Die Konvertierungsspezifizierer und deren Bedeutung sind:

[...]

c

[...] das int Argument wird in eine unsigned char konvertiert, und das resultierende Zeichen wird geschrieben.

+6

Der '(char)' Cast ist nicht notwendig. Das Argument für '% c' ist ein' int' und sein Wert wird intern durch 'printf' in 'unsigned char' umgewandelt. – chqrlie

+1

@chqrlie, aber es macht die Absicht klar. Dies ist kein Fehler beim Formatieren. Außerdem kann es einige populäre Compiler daran hindern, sich zu beschweren, wenn sie die Formatzeichenfolge validieren. – StoryTeller

+0

@StoryTeller: Welcher Compiler würde sich über 'printf ("% c \ n ", 89) beschweren;'? – chqrlie

5

Sie Angenommen, haben eine ganze Zahl int value = 89; Sie können

  • Verwendung printf("%c", value); statt printf("%d", value);.

  • oder einfach putchar(value);

ist jedoch zu beachten, dass Y nicht der ASCII-Wert von 89 ist. Es ist umgekehrt: Das Zeichen Y hat einen ASCII-Wert von 89. Die C-Sprache unterstützt neben ASCII andere Zeichensätze, so dass 'Y' nicht unbedingt den Wert 89 hat, tatsächlich ist der Wert 232 auf IBM Mainframes, die immer noch den EBCDIC-Zeichensatz verwenden.

Verwandte Themen