在C中pow()无法正常工作

问题描述:

我不知道我是否有错误理解pow的概念,但我已经尝试了很多东西,但是,在这里会感谢一些帮助,为什么pow不工作。 我试图计算体重指数这是体重指数=体重/(长度^ 2)我知道我可以做(长度* 2),但我想学习功能。在C中pow()无法正常工作

#include <stdio.h> 
#include <conio.h> 
#include <math.h> 

int main() 


{ 
    float langd1; 
    float langd2; 
    float langd3; 
    float langd4; 
    float vikt1; 
    float vikt2; 
    float vikt3; 
    float vikt4; 

    { 

     printf("Whats your weight?"); 
     scanf_s("%f", &vikt1); 
     printf("Whats your weight?"); 
     scanf_s("%f", &vikt2); 
     printf("Whats your weight?"); 
     scanf_s("%f", &vikt3); 
     printf("Whats your weight?"); 
     scanf_s("%f", &vikt4); 

     printf("Whats your lenght?"); 
     scanf_s("%f", &langd1); 
     printf("Whats your lenght?"); 
     scanf_s("%f", &langd2); 
     printf("Whats your lenght?"); 
     scanf_s("%f", &langd3); 
     printf("Whats your lenght?"); 
     scanf_s("%f", &langd4); 

     printf("User 1, your BMI is %f", vikt1/pow(langd1)); 

     system("pause"); 


    } 
    getchar(); 
    return(0); 


} 
+7

'POW()'有两个参数,你给它一个。甚至不应该编译。 –

+4

'pow(x,y)'绝对不是'2 * x' ... – usr2564301

+2

@Jongware除非'x == 2',但这是一个边缘情况。 –

您应该使用pow(langd1,2)

pow()需要两个参数。第一个是基数,第二个是指数。它返回(base^exponent)

如果您不给它第二个参数,它会调用未定义的行为。 编辑:其实它只是不会编译。我曾与这些可变参数混淆。

有关详细信息,请参阅http://www.tutorialspoint.com/c_standard_library/c_function_pow.htm

+2

如何在没有匹配签名的情况下编译? –

+1

我永远不会使用pow(x,2)。 x * x有什么问题? – FredK