2011-11-13 4 views
1

プログラミングの書籍には簡単な挑戦をしていますが、f =(a - b) (x - y)を1つのprintf()関数を使って返します。そして、私はこのエラーを取得する:「エラー:呼び出されたオブジェクト 『 - b』は関数ではありません」このエラーはなぜ発生しますか? "ch1.c:12:エラー:オブジェクト 'a - b'は関数ではありません"

をここにコードがある:

#include <stdio.h> 

main() 
{ 
     int a = 5; 
     int b = 1; 
     int x = 10; 
     int y = 5; 

     printf("\nThe result of f = %d\n", (a-b)(x-y)); 
} 
+0

'main()'は 'int main(void)'でなければなりません。 –

+0

どのような違いがありますか。本の読み込みでは、main()とは対照的にmain()が使用されます。 – nastyn8

+2

古代の方言を永遠に実装しているコンパイラには依存しません。標準では、実装されているすべての実装でint main(void)とint main(int argc、char * argv [])をエントリポイントとして提供する必要があります。 –

答えて

2

掛けようとしていますか?その場合は、変更:

printf("\nThe result of f = %d\n", ((a-b)*(x-y))); 

printf("\nThe result of f = %d\n", (a-b)(x-y)); 

は '*' を重要であること。これは乗算演算子です。全体の余分な括弧は本当に必要ではない、私はちょうどそれらの内部の全体の方程式を結ぶことによってきちんとしているようにしたい。

+0

はい、私はあなたの助けをありがとう – nastyn8

6

C/C++は数学のように暗黙の乗算を許可していません。だから、*を使用する必要があります。

printf("\nThe result of f = %d\n", (a-b) * (x-y)); 
             ^
            insert * here 

を、それが今であるため、(a-b)x-yの単一のパラメータを持つ関数呼び出しとして扱われています。もちろんa-bは関数ではないので、あなたが見ているエラーが発生しています。

+0

答えが – nastyn8

+0

@ nastyn8の場合、答えがあなたの問題を解決するならば、(投票に加えて)投票矢印の下のチェックマークをクリックするべきです。 – dsolimano

関連する問題