2016-11-24 20 views
-2

これは、関数を使用した簡単な利益のために私のコードです: -cの型ミスマッチ関数の再宣言とは何ですか?

#include<stdio.h> 
#include<conio.h> 

void main() 

{ 
    int a,c; 
    float b,d; 

    printf("Enter principle value :"); 
    scanf("%d", &a); 
    printf("Enter rate :"); 
    scanf("%f", &b); 
    printf("Enter time:"); 
    scanf("%d", &c); 

    d=si(a,c,b); 
    printf("The simple interest is %f", d); 
    getch(); 
} 
float si(int a, int c, float b) 
{ 
    float f; 
    f=(p*t*r/100); 
    return(0); 
} 

だから、これはフロートSIからエラーとして「SIの型の不一致の再宣言」を与えています。あなたは整数としてtを宣言し、これだけなのような上記の行にtを宣言していないよう

+3

タイプの不一致の再宣言エラーに関する他の質問を見ましたか? –

+1

'' int main(void) 'の前に' float si(int a、int c、float b);を置きます。 scanf( "%d"、&t);) 'scanf("%d "、&c);?' – BLUEPIXY

+1

は 't'変数ですか? –

答えて

2

まず第一に、このスニペット

printf("Enter time:"); 
scanf("%d", &t); 

は動作しないはずです。

int a, c, t;

また、あなたのsi関数内の変数のいずれかを宣言していませんでした。変数cを渡すと、決して初期化されません。

タイプミスマッチエラーは、si関数の前方宣言に役立ちます。

プログラムの先頭に(mainの上に)行float si(int a, int c, float b);を追加すると、どのタイプの関数siがあるか、またどの引数を期待するかをコンパイラに知らせることができます。それが一番下に後で定義されていますので、あなたは、あなたのプログラムがその機能を知りません

d = si(a,c,b); 

を呼び出すと

#include <stdio.h> 
#include <conio.h> 

float si(int a, int c, float b); 

float si(int a, int c, float b){ 
    float f; 
    f=(a*b*c/100); 
    return f; 
} 

void main(){ 
    int a, c; 
    float b, d; 

    printf("Enter principle value :"); 
    scanf("%d", &a); 
    printf("Enter rate :"); 
    scanf("%f", &b); 
    printf("Enter time:"); 
    scanf("%d", &c); 

    d = si(a,c,b); 
    printf("The simple interest is %f", d); 
} 
+0

私の知る限り、次の2種類の関数があります: - 関数が宣言される前の関数 プロトタイプ - 関数は後で言及されます。 したがって、私は後者に従っています。エラー –

+1

@rokkopavka:C90モード(C99またはC11ではなく)でコンパイルしているため、コンパイラは、未定義の引数リストと戻り値の型を持つ、以前宣言されていない関数の呼び出しとして 'si(a、c、b) 'int' - 事実上' extern int si(); '後で' si'を 'float'を返すように定義すると、コンパイラはdefi以前に使用された暗黙の宣言と一致しません。 C99またはC11モードでコンパイルする場合は、関数を使用する前に関数を宣言するか、プロトタイプを事前に作成せずに 'static'関数を定義する必要があります。 –

+1

@rokkopavkaいいえ、_function宣言_と_関数定義_(実際の関数)があります。プログラム内で関数が呼び出される時点では、その関数を呼び出すコードよりも上位の関数宣言または関数定義を介して、その形式を知る必要があります。 – Lundin

1

は、ここでは、コードを修正するために私の最高の試みです。これを修正するには、 "前方宣言"を参照してください。また、変数 't'を使用しますが、定義されていないことがわかります。

関連する問題