Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么这些以不同顺序执行相同计算的程序会给我不同的输出?_C++ - Fatal编程技术网

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

C++ 为什么这些以不同顺序执行相同计算的程序会给我不同的输出?,c++,C++,为什么这两个程序的输出不同?我已经包括了代码,所以你可以很容易地查看和尝试它。谁能给我解释一下吗 #include <iostream> #include <iomanip> using namespace std; int main() { float pi = 3.14159; int r; while (cin >> r) { cout << "VOLUME = " << fixed &

为什么这两个程序的输出不同?我已经包括了代码,所以你可以很容易地查看和尝试它。谁能给我解释一下吗

#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;
}
#包括
#包括
使用名称空间std;
int main(){
浮点数pi=3.14159;
INTR;
而(cin>>r){

cout你截图中的代码不是你在这里发布的代码。我建议将来,如果你需要帮助解决你遇到的问题,你可以发布你遇到问题的代码,而不是完全不同的代码


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

问题可能是浮点型决定。除非他没有设置变量,否则任何事情都可能发生。你能发布完整的程序吗?@spartygw。如果你愿意帮助他,花时间编辑问题,使问题保持正确的形状。我的经验是,当noobs的问题[暂停]时,他们会取得最好的学习效果。对于第一个问题,如果我尝试1523,它会给我14797487059.353,这是正确的一个。浮点值不够大,无法进行计算,数字溢出。如果使用双精度,它们都输出相同的数字。@ibrahiem我已投票重新打开您的问题,但仍然不够好。您应该将所有信息都放在问题中。“输出不同”很难被称为“信息”。我已将您的评论答案编辑到文本中,下次请您自己这样做-不要只在评论中回答。
#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;
}