C++ 当计算放在参数输入之前的代码中时,为什么计算不起作用?

C++ 当计算放在参数输入之前的代码中时,为什么计算不起作用?,c++,C++,x1=7、x2=3、y1=12、y2=9的正确答案应该是5。这个代码给了我5.9。。。我想不出是什么问题 #include <iostream> #include <cstdlib> #include <cmath> using namespace std; int main() { int x1, x2, y1, y2; double distance; distance = sqrt(pow((x2-x1), 2) + po

x1=7、x2=3、y1=12、y2=9的正确答案应该是5。这个代码给了我5.9。。。我想不出是什么问题

#include <iostream>
#include <cstdlib>
#include <cmath>

using namespace std;

int main()
{

    int x1, x2, y1, y2;
    double distance;

    distance = sqrt(pow((x2-x1), 2) + pow((y2-y1), 2));

    cout << "Enter x1: ";
    cin >> x1;
    cout << "Enter x2: ";
    cin >> x2;
    cout << "Enter y1: ";
    cin >> y1;
    cout << "Enter y2: ";
    cin >> y2;

    cout << "The distance between two points is: " << distance << endl;

    return 0;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
int-x1,x2,y1,y2;
双倍距离;
距离=sqrt(功率((x2-x1),2)+功率((y2-y1),2));
cout>x1;
cout>x2;
cout>y1;
cout>y2;
您的期望是:

distance = sqrt(pow((x2-x1), 2) + pow((y2-y1), 2));
将使用用户输入不正确的变量值。执行该行时,变量
x1
等未初始化。因此,程序具有未定义的行为

将该行移到读取y2的行之后

// Not good to be here.
// distance = sqrt(pow((x2-x1), 2) + pow((y2-y1), 2));

cout << "Enter x1: ";
cin >> x1;
cout << "Enter x2: ";
cin >> x2;
cout << "Enter y1: ";
cin >> y1;
cout << "Enter y2: ";
cin >> y2;

distance = sqrt(pow((x2-x1), 2) + pow((y2-y1), 2));
//呆在这里不太好。
//距离=sqrt(功率((x2-x1),2)+功率((y2-y1),2));
cout>x1;
cout>x2;
cout>y1;
cout>y2;
距离=sqrt(功率((x2-x1),2)+功率((y2-y1),2));
您的期望是:

distance = sqrt(pow((x2-x1), 2) + pow((y2-y1), 2));
将使用用户输入不正确的变量值。执行该行时,变量
x1
等未初始化。因此,程序具有未定义的行为

将该行移到读取y2的行之后

// Not good to be here.
// distance = sqrt(pow((x2-x1), 2) + pow((y2-y1), 2));

cout << "Enter x1: ";
cin >> x1;
cout << "Enter x2: ";
cin >> x2;
cout << "Enter y1: ";
cin >> y1;
cout << "Enter y2: ";
cin >> y2;

distance = sqrt(pow((x2-x1), 2) + pow((y2-y1), 2));
//呆在这里不太好。
//距离=sqrt(功率((x2-x1),2)+功率((y2-y1),2));
cout>x1;
cout>x2;
cout>y1;
cout>y2;
距离=sqrt(功率((x2-x1),2)+功率((y2-y1),2));

你的程序表现出未定义的行为,因为对非初始化变量进行计算(即在读取值之前计算)。考虑从A学习而不是随机编码。所以我应该把公式放在读取值的下面。这个问题的标题需要重新表述。“不能解决这个问题”。当你编写一个程序,你不写数学方程,但是一个接一个执行的语句,你不能改变任何你想要的顺序。考虑使用<代码> x*x<代码>而不是<代码> POW(x,2)。
。通常更准确、更快。由于对未初始化的变量进行计算(即在读取值之前进行计算),程序会显示未定义的行为考虑从A学习而不是随机编码。所以我应该把公式放在读取值下面。这个问题的标题需要重新表述。“不能弄清楚这个问题”。当你编写一个不写数学方程的程序时,绝对不能说,但是一个一个地执行的语句,所以你不能改变任何你想要的顺序。考虑使用<代码> x*x < /代码>而不是<代码> PoW(x,2)。通常它更准确和更快。