这是我的代码的一部分:
double interf1 = interf(ppp, numberOfPoints);
printf("interf (%e,%e)\n", interf(ppp,numberOfPoints), interf1);
问题是,当我打印 interf1
和 interf(ppp, numberOfPoints)
的值时,我得到不同的结果。
这有什么解释吗?
最佳答案
这可能是 side effect 的症状.
这是一个具有副作用的 interf
实现的简单示例:
int z;
double interf(int p, int n) {
return z++;
}
每次调用,即使使用相同的值,也会返回不同的结果。
其他副作用示例包括从流(例如文件或网络接口(interface))读取,副作用是您移动文件上的位置,或消耗网络缓冲区中的数据。
副作用本身并不坏。您只需要了解它们,如果引入它们,请在函数名称中记录它们。明确它会修改某些状态。
关于c - 具有相同参数的相同函数会产生不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32398510/