這裏是我的代碼的一部分:不同的結果與相同參數
double interf1 = interf(ppp, numberOfPoints);
printf("interf (%e,%e)\n", interf(ppp,numberOfPoints), interf1);
的問題是,當我打印的interf1
和interf(ppp, numberOfPoints)
值我得到不同的結果。
對此有任何解釋嗎?
這裏是我的代碼的一部分:不同的結果與相同參數
double interf1 = interf(ppp, numberOfPoints);
printf("interf (%e,%e)\n", interf(ppp,numberOfPoints), interf1);
的問題是,當我打印的interf1
和interf(ppp, numberOfPoints)
值我得到不同的結果。
對此有任何解釋嗎?
我會說是的,這是一個解釋(但問題嚴重缺乏適當的信息,任何人都可以真正指出它)。
方法interf
有一些內部可變狀態或依賴於其他數據之間的調用之間的變化。
或者,可能ppp
或numberOfPoints
的值在呼叫間發生變化,但這種可能性要小得多。考慮到這裏的上下文,這將涉及多線程。
這可能是side effect的症狀。
這是interf
一個實現,它具有副作用的一個簡單的例子:
int z;
double interf(int p, int n) {
return z++;
}
每個呼叫,即使使用相同的值返回不同的結果。
其他副作用示例包括從流(例如文件或網絡接口)讀取,副作用是您正在移動文件上的位置,或從網絡緩衝區中消耗數據。
副作用本身並不壞。你只需要注意它們,如果你介紹它們,把它們記錄在函數名中。說清楚它會修改某些狀態。
什麼是'interf'的聲明? – Barmar
輸出是什麼? – OldProgrammer
「這是我的代碼的一部分:」如何提供一個演示行爲的完整示例。 – weston