C++程序持续输出相同值、value[1]计算后不更新问题咨询
问题根本原因
核心诱因是忽略了C++的整数除法规则,代码中写的分数系数全部按照整数逻辑计算,完全没有得到预期的浮点数值。
- 代码第8行的两个除法表达式
3/2、1/2,除号两边都是整型字面量,编译器会默认执行整数除法:直接舍弃小数部分保留整数结果,因此3/2的实际计算结果是1,1/2的实际计算结果是0。 - 把这两个错误的系数代回原式,赋值逻辑就变成了:
value[1] = 1 * value[0] - 0 * x * pow(value[0], 3) = value[0]。后续循环里又执行了value[0] = value[1],相当于两个变量来回赋同一个值,数值自然永远不会发生变化,输出始终一致。
修正方案
- 把除法表达式里的至少一个操作数改成浮点型字面量,强制编译器执行浮点除法,把第8行代码修改为:
value[1] = ((3.0 / 2) * value[0]) - ((1.0 / 2) * x * pow(value[0], 3));
- 额外注意:代码中使用了
pow函数但没有引入对应头文件,需要在开头补充#include <cmath>,避免出现编译错误或未定义行为。 - 当前代码是没有终止条件的死循环,如果不需要无限迭代记得补上对应的循环退出判断。
内容的提问来源于stack exchange,提问作者mad_cockroach_
相关产品推荐
相关产品推荐

