变量以非零的形式进入C函数,在内部自动变为零

变量以非零的形式进入C函数,在内部自动变为零,c,C,我在调试一段代码,发现当我在函数执行之前打印出一个变量时,它是非零的。同一个变量随后被用作函数的输入参数,但当在该函数的开头打印出来时,它表示为零 在函数调用之外,它如下所示: printf("sigma_b_m: %f \n",sigma_b_m); oprq_init(sigma_b_m, b_m, r_m, x, P); 在函数调用中,我执行了以下操作: void oprq_init(const float sigma_b_m, const float b[3], const float

我在调试一段代码,发现当我在函数执行之前打印出一个变量时,它是非零的。同一个变量随后被用作函数的输入参数,但当在该函数的开头打印出来时,它表示为零

在函数调用之外,它如下所示:

printf("sigma_b_m: %f \n",sigma_b_m);
oprq_init(sigma_b_m, b_m, r_m, x, P);
在函数调用中,我执行了以下操作:

void oprq_init(const float sigma_b_m, const float b[3], const float r[3], float K[16], float P[256]) {`
    printf("sigma_b_m: %f \n",sigma_b_m);
}
为了清晰起见,我删除了函数的其余部分,但printf行实际上位于函数的最开头

然后输出为:

西格玛:0.001745
西格玛:0.000000


你知道它现在是如何注册为零的,而不是它在进入函数之前告诉我的0.001745吗?

好的,我意识到了我自己的愚蠢错误。。。头文件在
#ifndef
语句中有一个输入错误。。。我为那些麻烦的家伙和我的固执感到抱歉。

显示函数的原型,以及足够的代码来实际查看完整的图片。无法回答。调用函数之前是否声明了该函数?如果没有,您的浮点值将被提升为double。显示复制代码,您将在发出调用的文件中包含头文件,对吗?