我寫了一個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
不是靜態的,爲什麼它在函數調用之間持續存在?謝謝
您使用未初始化的變量 - >結果不確定的行爲。 –