printf-format für 1-byte-Zahl unterzeichnet

Vorausgesetzt, die folgenden:

sizeof(char) = 1
sizeof(short) = 2
sizeof(int) = 4
sizeof(long) = 8

Den printf format für ein 2-byte-Zahl unterzeichnet ist %hd für ein 4 byte signed-Zahl %d für ein 8-byte-Zahl unterzeichnet ist %ld, aber was ist das richtige format für ein 1-byte-Zahl unterzeichnet?

  • FYI: sizeof(char) ist definiert in der Spezifikation immer 1 egal, die tatsächliche Größe des char.
  • Gibt es etwas falsch mit der Förderung einer int und nur mit %d?
  • Für Ihre Frage, die Sie vielleicht Lesen möchten, z.B. dieser Verweis.
  • Ich dachte, dass alles, was kürzer ist als ein int wird in einen int (oder uint, wenn unsigned), wenn etwas in den stack übergeben printf(), also, was ist der nutzen von h und hh?
  • Gute Frage. Die Antwort scheint unklar.
  • Förderung int tut Zeichen Erweiterung (wenn char signiert ist) , so z.B. 0xf0 wird 0xfffffff0 was nicht ganz das gleiche wie 0xf0..

InformationsquelleAutor CHRIS | 2015-02-07
Schreibe einen Kommentar