2

私は C を学習しようとしている C# 開発者です (続いて C++)。私はネイティブになり、テキスト エディターとして vim を使用して Ubuntu で作業し、Gnu C コンパイラー (gcc) をコンパイルします。

シンプルなCelcius => Fahrenheitコンバーターを作成しようとしていますが、次のエラーが発生しています:

呼び出されたオブジェクト '0' は関数ではありません

私のコードは次のとおりです。

#include <stdio.h>

main()
{
    for(int i = 0; i < 300; i+20)
    {
        int celcius = (5/9)(i-32);
        printf("%d - %d \n", i, celcius);
    }
}

私はこれでコンパイルしています:

gcc FahrenheitToCelcius.c -std=c99

誰かが私がここで間違っていることを指摘できますか?

ありがとう

4

4 に答える 4

6

人々が指摘したように

int celcius = (5/9)(i-32);

する必要があります

int celcius = (5/9)*(i-32);

ただし、その特定のエラー メッセージが表示される理由は、

int celcius = (5/9)(i-32);

実行時に次のように評価されます

int celcius = (0)(i-32);

また、ランタイム システムは (0) をポインターとして認識します。

したがって、整数除算を避けるために数学を変更する必要があります

于 2013-09-28T16:04:09.107 に答える
5

C では (他の言語でもそうだと思います :)) 算術演算を実行するには、算術演算子が必要です。
変化する

int celcius = (5/9)(i-32);

int celcius = (5/9)*(i-32);
于 2013-09-28T16:00:53.317 に答える
3

この行には問題があります:

int celcius = (5/9)(i-32);

で指定された関数を呼び出そうとしているとコンパイラが判断するためです(5/9)。乗算を実行したい場合は、次のようにする必要があります。

int celcius = (5/9)*(i-32);

代わりは。

さらに、その計算から浮動小数点値が返されることが予想される場合は、次のようにする必要があります。

int celcius = (5.0/9.0)*(i-32.0);

5/9は整数除算であり、浮動小数点値を返すことはありません。

于 2013-09-28T16:01:39.087 に答える
1

変化する

int celcius = (5/9)(i-32)

 int celcius = (5/9)*(i-32); 
于 2013-09-28T16:01:03.113 に答える