2016-06-28 10 views
-4

私はこの問題を解明しようとしていますが、C言語に関する回答は見つかりません。問題は、別の関数で戻り値を使用しようとすると、その値が出力されず、出力時に '0'として出力されるということです。別の関数の戻り値を使用する(C)

int getFinanceAmt(float Cost, float Deposit){ 
    float Financing; 
    Financing = Cost - Deposit; 
     printf("%f\n", Financing); 

return Financing;} 

だから、目標は、その戻り値を利用して、この関数の内部式にプラグインすることです:

int getInterest(float Financing, float interestRate){ 
    float interest; 
    interest = Financing * interestRate; 
     printf("%f\n", interest); 

return interest;} 

は私もどこ「利率」である別の関数でこれを行う必要がありますから来た。これは別の機能でもあります。何らかのポインタが必要なのは正しいのですか?

+1

郵便番号"別の関数で戻り値を使用する"。これらの2つの機能のどちらもお互いを呼びません。または、その "別の機能"を表示する。印刷を行ったコードなどがあります。 – chux

+1

'int'を返すと思われる' getFinanceAmt() '関数から' float Financing'を返すとはどういう意味ですか? – user3078414

+0

'float'を最も近い整数値に変換する必要がある場合は、'(int) 'ではなく' roundf(x) 'を使用してください。 – chux

答えて

1

いいえ、私が見るとおり、あなたはが必要ですポインタがここにあります。あなたの場合、あなたの意向とあなたのコードに不一致があります。

Financinginterestfloatですが、返される関数の戻り値の型はintです。関数の戻り値の型をfloatに変更して互換性を持たせることができます。

+0

驚いたことに私はそれを完全に見落としました。変更されましたが、依然として0が出力されます。 –

+0

@KyleStewardと戻り値はどのように出力されますか? '%f'、確かに? –

+0

コードは印刷するものではありませんが、テスト目的で印刷していますが、 '%f'を使用しています。 –

1

戻り値の型が一致しません。戻り値の型をfloatに変更してください。

+0

変更されましたが、それでも0が出力されます。 –

1

最初に、getFinanceAmtでは、関数がintを返すと宣言されていますが、後でfloatが返されるように見えます。まずgetFinanceAmtを次のように更新してください。

float getFinanceAmt(float cost, float deposit) 
{ 
    float financing; 
    financing = cost - deposit; 
     printf("%f\n", financing); 

    return financing; 
} 

他の機能でも同じことが起こっています。しかしもっと重要なのは、実際には最初の関数を名前で呼び出す必要があり、上で宣言した必要なパラメータを渡す必要があるということです。私はgetInterestで3つのパラメータを取ってから、内部的にgetFinanceAmtを呼び出すことをお勧めします。

2つのfuntionsのための間違った戻り値の型の問題を修正
float getInterest(float cost, float deposit, float interestRate) 
{ 
    float interest; 
    interest = getFinanceAmt(cost, deposit) * interestRate; 
     printf("%f\n", interest); 

    return interest; 
} 
1

、あなたが値を使用するには、このような何かを行うことができ、他のための引数として1から返さ:

float getFinanceAmt(float Cost, float Deposit) 
{ 
    return Cost - Deposit; 
} 

float getInterest(float Financing, float interestRate) 
{ 
    return Financing * interestRate; 
} 

void foo() 
{ 
    float cost, deposit, rate; 

    /* more code here, which initializes the above variables */ 

    printf("Interest is %f\n", getInterest(getFinanceAmt(cost, deposit), rate)); 
} 
関連する問題