将 void 函数更改为返回值函数

Changing Void function to Return Value function

本文关键字:函数 返回值 void      更新时间:2023-10-16

给定一个当前使用void函数运行的程序:更改程序,使void函数不输出变量的值,而是发送到主函数。

void trackVar(double& x, double y);
int main()
{
double one, two;
cout << fixed << showpoint << setprecision(2);
cout << "Enter two numbers: ";
cin >> one >> two;
cout << endl;
trackVar(one, two);
cout << "one = " << one << ", two = " << two << endl;
trackVar(two, one);
cout << "one = " << one << ", two = " << two << endl;
return 0;
}
void trackVar(double& x, double y)
{
double z;
z = floor(x) + ceil(y);
x = x + z;
y = y - z;
cout << "z = " << z << ", ";
}

我可以得到,所以输出正确列出了一和二的值,但不知道如何将"z"的输出作为主函数的一部分。

最终结果(对于感兴趣的人(:

double trackVar(double& x, double y); ///function prototype (switched to double instead of void)
int main()
{
double one, two, z;
cout << fixed << showpoint << setprecision(2);
cout << "Enter two numbers: ";
cin >> one >> two;
cout << endl;
z = trackVar(one,two);
cout <<"z= "<<z<<" "<<"one= "<<
one<<"two= "<<two<< endl;
z = trackVar(two,one);
cout <<"z= "<<z<<" "<<"one= "<<
one<<"two= "<<two<< endl;
return 0;
}
double trackVar(double& x, double y)
{
double z;
z = floor(x) + ceil(y);
x = x + z;
y = y - z;
return z;
}

检查后,我更新了我的帖子。

试试这个:

void trackVar(double& x, double& y)
{
double z;
z = floor(x) + ceil(y);
x = x + z;
y = y - z;
}

所以,正常函数trackVar(double x, double y)它会将一个副本 x 和 y 发送到函数中,所以即使你在那里切换它们,也没有任何变化。 但是,如果你使用引用,trackVar(double& x, double& y),来改变那里的x和y,它确实会改变值,所以小心使用引用。

举个简单的例子:

void trackVar(double& a, double& b)
{
a = 99;
b = 66;
}
int main()
{
double a = 1;
double b = 2;
trackVar(a, b);
std::cout << "New a: "<< a << std::endl;
std::cout << "New b: " << b << std::endl;
return 0;  
}

输出:New a: 99输出:New b: 66