2017-11-20 2 views
-2

Ich bekomme immer den gleichen Fehlercode: "Warnung: Format '% f' erwartet Argument vom Typ 'Double', aber Argument 2 hat den Typ 'float *' [-Wformat = ] " Mein Code ist unten, jede Hilfe, die es zu debuggen würde sehr geschätzt werden!Ich habe Probleme beim Kompilieren meines Codes in Bash

//Program to compute the stress and strain in steel rods of different diametes 
#include <stdio.h> 
#include <math.h> //#include <math.h> 

//Define Constants 
#define PI 3.14f; 

//Define Variables 
float Es; 
float D; 
float P; 

int main(void) 

{ 
     Es = 3 * pow(10,7); 

     for(P=50000; P<=100000; P=P+25000) { 
       printf("\nCompression Load =  %f\n\n", &P); 
       printf("Diameter  Stress  Strain\n"); 
       for(D=2; D<=5; D=D+1) { 
         float Area; 
            Area = D * D/4 * PI; 
         float Stress; 
            Stress = P/Area; 
         float Strain; 
           Strain = Stress/Es; 
         printf("%f  %f  %f\n", &D, &Stress, &Strain); 
       } 
     } 
     return 0; 
} 
+0

Entfernen Sie die '&' im 'printf' und sollten Sie gut sein. – JanBrinker

Antwort

2

Die %f Formatbezeich zu printf erwartet eine double als Argument. Was Sie stattdessen (an mehreren Stellen) einreichen, ist die Adresse eines float, d. H. Ein float *. Diese sind inkompatibel.

Sie müssen den Adressenoperator & aus diesen Operanden entfernen. Dann werden Sie in float Werte werden geben, die automatisch zu double Werte umgewandelt werden:

printf("\nCompression Load =  %f\n\n", P); 

... 

printf("%f  %f  %f\n", D, Stress, Strain); 
Verwandte Themen