使用一个函数的返回值作为c ++中另一个函数的参数

时间:2017-05-02 03:23:49

标签: c++

我找到了一些相关的答案但却无法理解,因为代码对我来说很复杂。

在此计划中,我使用dif ()查找价格差异,然后将变量值总计存储在变量difrnc中。然后我使用difrnc变量作为函数调用的参数

inflation=inflan(difrnc,lyp) //(calculates the inflation)

我可以直接使用函数difrnc中的答案作为函数dif()的定义,而不是将整数存储在变量inflan()中,而不是如何?

对不起,如果这是一个重复的问题,如果有人能用这个程序解释它会很棒。

#include<iostream>
using namespace std;

double dif(double lp,double cp);//cp= current price,lp= last price, current 
double inflan(double difference,double lastyp);
double cost(double cp,double inrate);

int main()
{
        double lyp,cyp,difrnc,inflation,one_year_cost;  // lyp = last year price,cyp=current year price, 
        for(int i=0;i>=0;i++)
        {
            cout<<"Enter current years price :";
            cin>>cyp;
            cout<<"Enter last Years price: ";
            cin>>lyp;
            difrnc=dif(lyp,cyp);
            if(difrnc<0)
            {
                cout<<"price decreased by "<<difrnc<<endl;
            }
            else
            {
                cout<<"price increased by "<<difrnc<<endl;
            }
            inflation=inflan(difrnc,lyp);
            one_year_cost=cost(cyp,inflation);
            cout<<one_year_cost<<endl;
        }   
}
    // to find the difference in price
    double dif(double lp,double cp)
    {
        double total;
        total=cp-lp;
        return(total);
    }
    // to find the inflation
    double inflan(double difference,double lastyp)
    {
        double inrate;
        inrate=difference/lastyp;
        return(inrate);
    }
    // to find estimated cost in one year
    double cost(double cp,double inrate)
    {
        double
        totalc=cp+inrate;
        return(totalc);
    }

2 个答案:

答案 0 :(得分:0)

除了您在函数中的当前问题,您可以通过删除它们的局部变量来简化它们,只需返回已计算的表达式。

例如:你有这个 - &gt;

double cost( double cp, double inrate ) {
    double totalc = cp + inrate;
    return totalc;
}

这样做安全有效:

double cost( double cp, double inrate ) {
    return cp + inrate;
}

对于任何不通过任何循环的简单函数,您都可以这样做。

关于你的实际问题,请查看这个快速程序;

<强> sample.cpp的

#include <iostream>

int five() {
    return 5;
}

int ten() {
    return 10;
}

int add( int a, int b ) {
    return a + b;
}

int main() {

    std::cout << add( five(), ten() ) << std::endl;

    return 0;
}

在主函数的第一行中设置一个断点,并在检查堆栈调用以及本地和自动变量时逐行逐步执行代码,以查看函数的每一行上发生的情况,以查看分配给每个变量的值。

答案 1 :(得分:0)

是的,你可以这样inflatio n = inflan(dif(lyp,cyp),lyp);

但是,由于您多次使用函数返回值,因此保持原样更有意义。