sqrt()
中的pow()
库的math.h
和C
函数未针对integer
类型定义,但它们不会抛出任何错误但适用于integer
参数,这是如何工作的?
答案 0 :(得分:5)
当在期望浮点值的上下文中使用时,整数被隐式转换为浮点值。而这正是您的场景中发生的事情,其函数接受浮点参数。
所以,当你写:
#include <math.h>
....
int i;
double d = sqrt(i);
使用隐式类型转换规则将整数i
转换为double
,并将double
传递给sqrt()
。
答案 1 :(得分:1)
从整数到浮点的隐式转换在C中工作正常,不是吗?
如果将一个整数作为参数传递给这些函数,它将自动转换为浮点类型。
答案 2 :(得分:1)
正如其他人指出的那样,整数将在需要时隐式转换为浮点数。但请确保包含math.h
标题。