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.

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...