我写了一个MBED LPC1768一个简单的点产品功能:功能函数之间的局部变量仍然存在调用
float dotProduct(float a[], float b[], int length){
float sum;
int i;
for (i = 0; i < length; i++){
sum = sum + a[i]*b[i];
}
return sum;
}
我在我的程序两次调用dotProduct在一排(测试)点两个128元1矢量({1,1,1 ... 1})并将它们打印为串行。所以预期的结果应该是128和128.然而,变量sum
似乎仍然存在,但是,因为我得到了128和256.此外,如果我将float sum
声明更改为float sum = 0
,我得到128和128所需的结果。变量sum
不是静态的,为什么它在函数调用之间持续存在?谢谢
您使用未初始化的变量 - >结果不确定的行为。 –