为什么这些程序以不同的顺序执行相同的计算会给出不同的输出?

时间:2014-11-14 19:16:58

标签: c++

为什么这两个程序的输出不同?我已经包含了代码,因此您可以轻松查看并尝试使用它。任何人都可以向我解释一下吗?

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
    float pi = 3.14159;
    int r;

    while (cin >> r) {
        cout << "VOLUME = " << fixed << setprecision(3)
             << pi*r*r*r*(4.0/3.0) << endl;
    }

    return 0;
}
#include <iostream>
#include <iomanip>
using namespace std;

int main() {
    float pi = 3.14159;
    int r;

    while (cin >> r) {
        cout << "VOLUME = " << fixed << setprecision(3)
             << (4.0/3.0)*r*r*r*pi << endl;
    }

    return 0;
}

如果我输入1523,第一个给我14797487059.353,这是正确答案,但第二个给出负数。

The 2 screens with the outputs this link include the 2 outputs the first one ir the right the second one is weird !

1 个答案:

答案 0 :(得分:0)

屏幕截图中的代码不是您在此处发布的内容。我建议将来,如果你需要帮助解决你遇到的问题,你可以发布你遇到问题的代码 - 而不是完全不同的代码。

在这种情况下,问题很简单 - r*r*r太大而不适合一个int。您可以将r更改为long long类型,此问题应该消失。或者,您可以使用您在此处发布的两个代码块中的任何一个,因为它们都可以按预期工作。