考虑以下 C++ 程序:
#include <iostream>
using std::cout;
using std::endl;
int main () {
float x = 0.0001;
float y = 0;
for (int i=0; i < 10000; i++) {
y += x;
}
cout << y << endl;
return 0;
}
编译并运行该程序,然后回答以下问题: 该程序的实际行为与其预期行为有何不同?
为什么没有看到预期的行为?
在确保程序语义保持不变的同时,您将对该程序进行哪些更改以确保预期和实际行为匹配?
以上是我的任务。我知道我应该自己做作业,但我被困住了。
对于 a) 部分,我只是说这两个数字不同。
对于 c) 部分,我将浮点数设为双倍。(我认为语义保持不变)
对于 b) 部分,我知道这被称为灾难性取消,但教授可能希望看到更多,我不知道还能说什么。有人能帮我吗?
谢谢你的帮助