2016-10-04 9 views
-2
#include <stdio.h> 
#define F(x) 32 + (x*9)/5 

int main(void) 
{ 
    int F,C; 
    printf ("Enter temperature in celsius="); 
    scanf ("%d",&C); 
    F(C); 

    printf (" %d fahrenheit = %d celsius\n", F, C); 

    return 0; 
} 

にファーを変換:論理エラー - I入力10摂氏、それはいくつかのように出てくるときは摂氏

1798680630 fahrenheit = 10 celsius 

私が間違って式を書いていますか?私はエラーを理解するように見えることはできません。 ちょっと初心者、チュートリアルを見てください。ありがとうございました!

+0

をあなたの変数 'F'。 http://ideone.com/Xc6c3x – mch

+1

[なぜ人々を混乱させるのですか](https://blog.codinghorror.com/coding-for-violent-psychopaths/) –

+0

まず、これらがintである場合、分割中に情報が多すぎる。第2に、変数FとマクロFの両方を持つことはできません(できません)。あなたのコードがうまくいかない理由について、以下の回答を参照してください。 – neoaggelos

答えて

0

F()の出力を変数に保存しません。それは次のようになります。

(...) 
    F = F(C); 

    printf (" %d fahrenheit = %d celsius\n", F, C); 

現在、あなたは未定義の動作であり、非常に危険である初期化されていない変数を印刷しています。

+0

ありがとう!それは今働く。 – belle

2

マクロ展開の結果はまったく保存されていません。したがって、Fは未処理です。

IMOでは、マクロはまったく必要ありません。ただ、変数を使用する:あなただけの整数の除算を行わないように、私はリテラル5.0を使用

#include <stdio.h> 
int main(void) 
{ 
    int C; 
    float F; 
    printf ("Enter temperature in celsius="); 
    scanf ("%d",&C); 
    F = 32 + (C*9)/5.0; 
    printf (" %f fahrenheit = %d celsius\n", F, C); 

    return 0; 
} 

注意してください。

+0

ありがとうございます!私は単純なものが正しい出力を与えなかったので、マクロに変更しました。もう一度試してみてください。 – belle

0

Fの住所を印刷していますが、変数も無駄にしません。

のようなあなたの印刷ですか

F(C); 

を削除:あなたはあなたがに値を代入したいので、= `` `F(C)の前に` Fを追加するのを忘れ

関連する問題