我在使用bash编译代码时遇到问题

时间:2017-11-20 17:59:38

标签: c

我一直得到相同的错误代码:"警告:格式'%f'需要类型为'double'的参数,但参数2的类型为'float *'[-Wformat =]" 我的代码如下,任何帮助调试它将非常感谢!

//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;
}

1 个答案:

答案 0 :(得分:2)

?sample的{​​{1}}格式说明符需要%f作为参数。您传入的内容(在多个位置)是printf的地址,即double。这些是不相容的。

您需要从这些操作数中删除运算符float的地址。然后,您将传递float *值,这些值将自动转换为&值:

float