这是我的代码片段:
float square_root(x)
float x;
{
.......
}
int main(){
printf("Square_root 2 = %f\n", square_root(4));
}
Run Code Online (Sandbox Code Playgroud)
当我将数字4.0传递给square_root()函数时,x函数内的参数是4.0000000所以它没问题.但是当我传递4时(如例子中),x函数内部的变量变为1.976262583365e-323#DEN
为什么会这样?
Gra*_*and 15
您正在使用旧式的函数声明,其中参数类型单独列出.请参阅C函数语法,参数列表后声明的参数类型
在传递时int,它float默认情况下不会转换为.但是,你的函数是将参数解释为a float,这会产生不良结果.
现代方法是在函数声明中包含参数类型,这将允许您的int参数自动转换为a float.
float square_root(float x)
{
.......
}
Run Code Online (Sandbox Code Playgroud)
有非原型函数的默认参数提升,并且没有像原型那样转换为参数的类型。所以基本上你int的 value4被解释为 afloat而不是被转换为 a float。
改用原型定义:
float square_root(float x)
{
.......
}
Run Code Online (Sandbox Code Playgroud)
将函数调用处的参数转换为 a float。
另请注意,旧式函数定义是过时的 C 功能,应避免使用。
| 归档时间: |
|
| 查看次数: |
4179 次 |
| 最近记录: |