这里是我的代码的一部分:不同的结果与相同参数
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