在C中使用math.h的sqrt()和pow()函数

Nee*_*mar 0 c

sqrt()pow()函数math.h库中C没有为定义integer的类型,但他们不抛出任何错误,但对于正常工作integer参数,如何工作的呢?

Dav*_*nan 5

在期望浮点值的上下文中使用时,整数会隐式转换为浮点值.这正是您的场景中发生的事情,其中​​函数接受浮点参数.

所以,当你写:

#include <math.h>
....
int i;
double d = sqrt(i);
Run Code Online (Sandbox Code Playgroud)

使用隐式类型转换的规则将整数i转换为a double,并将其double传递给sqrt().