zaid38 Geschrieben 26. August 2021 Geschrieben 26. August 2021 Hallo, Wozu diese ( h) und warum gibt es nicht Beispiel bei int iVal? Zitieren
Whiz-zarD Geschrieben 26. August 2021 Geschrieben 26. August 2021 hh ist signed char und h ist short int. https://www.cplusplus.com/reference/cstdio/printf/ Zitieren
zaid38 Geschrieben 31. August 2021 Autor Geschrieben 31. August 2021 (bearbeitet) warum überhaupt ( h UND hh) wir haben hier (%i) oder (%s) oder (%d) wenn wir String oder Ganzzahl dann nutzen wir diese Format ( %d) oder (%s) ds ist klar. aber WOZU diese ( h und hh) ? ich verstehe NIX uach warum oder wozu schriben ich auch ( %lld)? ich weiss ( %d) und ganzzahl auszugeben. Aber diese ( ll) ist weil diese long long inter? aj ich weiss , aber wozu schriebn ich diese ( ll, hh, h ) nben diese ( %) ??? Bearbeitet 31. August 2021 von zaid38 Zitieren
Rienne Geschrieben 1. September 2021 Geschrieben 1. September 2021 Hast du dir den Link von @Whiz-zarDmal angeschaut? Da steht doch eigentlich alles drin: Das bedeutet, dass du mit den Zusätzen h, hh oder ll die Länge des Datentypen modifizierst. Wenn du, wie in deinem Beispiel, zur Ausgabe den Format-Specifier d nutzt, ist das der Datentyp 'singed decimal integer' also ein Integer mit Vorzeichen im Dezimalsystem. D.h. der Ausgabedatentyp hat eine Größe von 16 Bit. Deine Datentypen, die du ausgeben möchtest, haben aber unter Umständen eine andere Größe. Darum wird dem Ausgabe-Specifier eine entsprechende Länge mitgegeben. Du kannst ja mal ein wenig damit herumspielen und testen, was mit deiner Ausgabe passiert. Beispiel: long lVal = 123456; printf("%hd\n", lVal); //die Ausgabe wäre nicht mehr 123456! Übrigens beantwortet der Link von @Whiz-zarD auch ein wenig deine Frage aus dem anderen Thread zur Wertzuweisung von dem 'signed char cVal=100;'. Char ist hier erst einmal auch nur ein Datentyp der Länge 8 Bit, der einen Wert speichert. Dieser Wert kann entweder als Zahl zugewiesen werden, wie in deinem Beispiel. Oder als ein Zeichen in einfachen Anführungszeichen (die Zuweisung cVal = '100' würde übrigens zu einem Overflow-Fehler führen, da es kein einzelner Character ist, sondern eine Kette von 3 Zeichen). Wie der Wert bei der Ausgabe konvertiert wird, hängt dann vom entsprechenden Format-Specifier ab. Wenn du also statt %d %c schreibst, wird der Wert der zugewiesenen Variable als Character interpretiert und entsprechend der ASCII-Tabelle als Zeichen ausgegeben: printf("%hhd\n", cVal); //Ausgabe: 100 printf("%c\n", cVal); //Ausgabe: d Anders herum geht das übrigens auch: Du kannst auch einen Integer-Wert als Zeichen ausgeben mittels %c. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.