spinnt mein compiler oder ich!????

OP #432757
#include <stdio.h>
#include <stdlib.h>

int main(void)
{ double x=2.666666666666;
  float wertx;


  printf("eigentlich x=%lf\n",x);

  wertx=x;
  printf("wert von x = %f",wertx);

  getchar();
  return EXIT_SUCCESS;
}

bekomme folgende fehlermeldung

10 untitled1.c
 warning: use of `l' length character with `f' type character

das FORMATZEICHEN für double ist doch %lf, also warum hat mein compiler 
dann ein problem damit?

kann mir jemand helfen!???

1000d DANK

>Raphael
OP
es geht mir aber darum,
dass mein double wert siehe ->

double x=2.666666666666;
  float wertx;


  printf("eigentlich x=%lf\n",x);


NICHT RICHTIG AUSGEGEBEN WIRD, AUF GRUND DER FEHLERMELDUNG.

10 untitled1.c
 warning: use of `l' length character with `f' type character

%lf ist nicht %1f    (kleines L , nicht die zahl 1 !!!)

%lf gross geschrieben wäre %LF ... aber %Lf ist das formatzeichen für 
longdouble!
Das Formatierzeichen für double ist bei printf %f
Das Formatierzeichen für float ist bei printf ebenfalls %f

Verwirrt?
Die Parameter-Übergaberegeln von C verlangen, dass floats
bei variadischen Funktionen als double übergeben wird. Als
Folge davon, kriegt printf nie einen float auch nur zu Gesicht,
immer nur double und daher kann für float und double dasselbe
Formatierzeichen, nämlich %f, benutzt werden.

Aber: Bei scanf ist das anders, denn dort wird ja ein Pointer
übergeben, und für scanf ist es schon wichtig zu wissen, ob
das jetzt ein Pointer auf einen double oder ein Pointer auf
einen float ist. Daher gibt es dort 2 Formatierzeichen:
%lf  für einen Pointer auf double
%f   für einen Pointer auf float

%lf ist also bei printf gar kein offizielles Formatierzeichen.
Aus Gründen der Symetrie haben aber einige Compilerbauer printf
zusätzlich noch mit einem %lf ausgestattet, damit eine gewisse
Angleichung mit scanf vorhanden ist (die eigentlich nicht
notwendig ist, wie oben schon geschildert). Dein Compiler
sieht das halt strikter.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.