Zum Inhalt springen

Wozu diese ( h) und warum gibt es nicht Beispiel bei int iVal?


Empfohlene Beiträge

Geschrieben (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 von zaid38
Geschrieben

Hast du dir den Link von @Whiz-zarDmal angeschaut? Da steht doch eigentlich alles drin:

grafik.png.f049b748eabfb32b8e265c319523655a.pnggrafik.png.a91dbb7a92790fd97fc35b3d0718a994.png

grafik.png.f49eecc4b5dfd00ea72bfdaa41d75811.png

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.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...