printf specifier



  • Hallo,
    ich bin ehrlich gesagt verwirrt.
    Man kann unter anderem hier ( http://en.wikipedia.org/wiki/Printf ) und auch in dem Buch "The C Programming Language" von den C-Erfindern, folgende Argumente für den jeweiligen Datentyp finden:
    - d, bei einer dezimalen Zahl mit Vorzeichen.
    - u unsigned int
    - f double

    etc.

    Nur bekomme ich eine Latte von Warnungen, wenn ich beispielsweise long mit %d ausgebe, oder long double mit %f, bei unsinged long braucht man %lu usw.
    Das alles steht weder in wikipedia, noch im Buch.

    Habe ich was verpasst? Ist das alles compilerspezifisch? Ich benutze den gcc unter Linux.

    Danke im Voraus für hilfreiche Antworten!

    Liebe Grüße
    Steffo



  • Wer lesen kann, ist klar im Vorteil.
    Gehe davon aus, dass beiden Quellen fehlerfrei sind, die gcc Compilerbauer auch ihr Handwerk verstehen und die genannten Warnungen korrekt sind, d.h. du den Fehler bei dir selbst suchen musst.





  • Wenn du nichts anderes angibst, geht printf() davon aus, daß von int bzw. double die Rede ist. Deshalb mußt du mit dem Kennzeichen l bescheidsagen, wenn du etwas größeres übergeben willst (kleinere Datentypen werden vom Compiler konvertiert).



  • Zwischen dem % und den von dir genannten Typen kann man noch einige Angaben machen.
    Das steht in dem Wikipedia-Artikel und sicher auch in deinem Buch.



  • OK, danke. Ich komme von Java und da ist printf etwas anders umgesetzt. "Länge" hat dort eine andere Bedeutung, deswegen hatte ich das bei C überflogen.

    L. G.
    Steffo



  • Steffo schrieb:

    Ich komme von Java und da ist printf etwas anders umgesetzt. "Länge" hat dort eine andere Bedeutung, ...

    [Loriot]
    Ach
    [\Loriot]

    Schreibe ein C-Programm, das 1000 mal schreibt: "C ist nicht Java" 😉



  • Es gibt dennoch Ähnlichkeiten. Wenn ein C/C++ Programmierer zu Java wechselt, wird er dieselben Probleme haben. Generell gilt das bei jeder Sprache...



  • Von einer Programmiersprache auf eine andere zu schließen geht meist schief.

    Wenn zwei Sprachen gleich sind, ist eine überflüssig.


Log in to reply